본문 바로가기

라즈베리파이에서 mkcert로 HTTPS 설정하기: 단계별 가이드

|||||||||||||| 2024. 6. 30.

라즈베리파이에서 HTTPS 연결을 설정하는 것은 보안을 강화하고 안전한 통신을 보장하는 중요한 과정입니다. 이 글에서는 mkcert를 사용하여 로컬 개발 환경에서 신뢰할 수 있는 인증서를 생성하고 Nginx를 통해 HTTPS를 설정하는 방법을 단계별로 설명합니다. 인증서 설치부터 Nginx 설정까지의 모든 과정을 따라하면, 쉽게 HTTPS 연결을 구축할 수 있습니다.

라즈베리파이에서 mkcert로 HTTPS 설정하기: 단계별 가이드

안녕하세요, 이번 글에서는 라즈베리파이에서 mkcert를 사용하여 HTTPS 설정을 하는 방법에 대해 알아보겠습니다. 자세한 단계별 가이드를 통해 여러분의 개발 환경을 안전하게 구축해보세요.

mkcert 설치 및 의존성 설정

라즈베리파이에서 mkcert를 사용하려면 먼저 필요한 의존성을 설치해야 합니다. 의존성 설치는 매우 간단합니다. 먼저 터미널을 열고 아래 명령어를 입력합니다:

sudo apt update  
sudo apt install libnss3-tools

 

그 다음, mkcert의 최신 버전을 다운로드하고 실행 권한을 부여한 후 '/usr/local/bin' 디렉토리에 이동시켜 사용 준비를 마칩니다:

wget [https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-v1.4.4-linux-arm](https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-v1.4.4-linux-arm)  
chmod +x mkcert-v1.4.4-linux-arm  
sudo mv mkcert-v1.4.4-linux-arm /usr/local/bin/mkcert

 

이제 mkcert 설치 및 의존성 설정이 완료되었습니다. 다음 단계로 넘어가서 로컬 CA 설치를 진행합니다.

로컬 CA 설치와 mkcert 설정

mkcert를 사용하기 위해 로컬 CA를 설치해야 합니다. 로컬 CA는 로컬 개발 환경에서 신뢰할 수 있는 인증서를 발급하기 위해 필요합니다. 아래 명령어를 실행하여 로컬 CA를 설치합니다:

mkcert -install  

 

이 명령어는 로컬 CA를 설치하는 동시에 시스템의 신뢰할 수 있는 인증서 저장소에 추가합니다. 이렇게 함으로써 로컬에서 생성한 인증서가 신뢰받을 수 있도록 합니다. 이제 로컬 CA 설치가 완료되었으니, 인증서를 생성하는 단계로 넘어가겠습니다.

로컬 인증서 생성

mkcert를 사용하여 라즈베리파이의 IP 주소나 도메인 이름에 대해 인증서를 생성할 수 있습니다. 예를 들어, 'localhost'와 특정 IP 주소에 대해 인증서를 생성하려면 다음 명령어를 사용합니다:

mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1

 

이 명령어를 실행하면 'localhost+3.pem' (인증서)와 'localhost+3-key.pem' (개인 키) 파일이 생성됩니다. 이러한 파일들은 HTTPS 연결을 설정하는 데 사용됩니다. 생성된 인증서 파일을 적절한 위치에 저장하고 다음 단계로 넘어가서 Nginx 설정을 진행합니다.

Nginx 설정 및 HTTPS 적용

생성된 인증서를 사용하여 Nginx 설정 파일을 수정합니다. 먼저 Nginx를 설치한 후, 설정 파일('/etc/nginx/sites-available/default')을 열어 인증서와 개인 키 파일의 경로를 지정합니다. 아래 명령어를 통해 Nginx를 설치합니다:

sudo apt install nginx  

 

 

그런 다음, 설정 파일을 열어 인증서와 개인 키 파일의 경로를 지정합니다:

sudo nano /etc/nginx/sites-available/default  

 

설정 파일에 다음 내용을 추가하거나 수정합니다. 'ssl_certificate'와 'ssl_certificate_key' 경로를 생성된 인증서 파일 경로로 변경합니다.

server {  
listen 80;  
server\_name localhost 192.168.1.1;location / {  
return 301 https://$host$request\_uri;  
}  
}

server {  
listen 443 ssl;  
server\_name localhost 192.168.1.1;ssl\_certificate /path/to/localhost+3.pem;  
ssl\_certificate\_key /path/to/localhost+3-key.pem;

location / {
    proxy_pass http://localhost:3000;  # 예시: 백엔드 서버에 프록시
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
}  

 

여기서 '/path/to/'를 실제 인증서 파일 경로로 변경합니다. 예를 들어, '~/mkcert' 디렉토리에 인증서를 저장했다면 경로는 '/home/pi/mkcert/localhost+3.pem'과 '/home/pi/mkcert/localhost+3-key.pem'이 됩니다. 설정을 저장하고 Nginx를 재시작하여 변경 사항을 적용합니다.

sudo systemctl restart nginx  

 

정리글

이 글에서는 라즈베리파이에서 mkcert를 사용하여 HTTPS를 설정하는 방법을 단계별로 설명했습니다. 의존성 설치부터 mkcert 설치, 로컬 CA 설정, 인증서 생성, 그리고 Nginx 설정 및 HTTPS 적용까지 모든 과정을 다루었습니다. 이 과정을 통해 로컬 개발 환경에서 안전한 HTTPS 연결을 설정하고, 보다 신뢰할 수 있는 환경을 구축할 수 있습니다. HTTPS 설정은 웹 애플리케이션의 보안을 강화하는 중요한 과정이므로, 꼭 이 방법을 활용해보시기 바랍니다.

자주하는 질문들

Q. mkcert란 무엇인가요?

A. mkcert는 로컬 개발 환경에서 신뢰할 수 있는 인증서를 손쉽게 생성할 수 있는 도구입니다.

Q. 라즈베리파이에 mkcert를 어떻게 설치하나요?

A. 'sudo apt update'와 'sudo apt install libnss3-tools' 명령어로 의존성을 설치한 후, mkcert의 최신 버전을 다운로드하여 '/usr/local/bin' 디렉토리에 이동시켜 설치합니다.

Q. mkcert를 사용해 로컬 인증서를 생성하려면 어떻게 하나요?

A. 'mkcert -install' 명령어로 로컬 CA를 설치한 후, 'mkcert localhost 127.0.0.1 ::1 192.168.1.1' 명령어로 인증서를 생성합니다.

Q. Nginx에서 HTTPS 설정을 어떻게 하나요?

A. 생성된 인증서와 개인 키 파일의 경로를 Nginx 설정 파일에 지정하고, HTTP 요청을 HTTPS로 리디렉션하도록 설정한 후 Nginx를 재시작합니다.

Q. mkcert 사용 시 주의할 점은 무엇인가요?

A. mkcert로 생성한 인증서는 로컬 환경에서만 신뢰받으므로, 실제 배포 환경에서는 신뢰할 수 있는 인증 기관(CA)에서 발급한 인증서를 사용해야 합니다.