로컬 호스트에서 SSL 인증서를 발급하고 구성하는 과정은 개발 환경을 실제 운영 환경과 유사하게 만들어 보안성을 높이고, HTTPS를 통한 안전한 데이터 전송을 테스트할 수 있게 해줍니다. 여기에는 여러 방법이 있지만, 가장 일반적이고 널리 사용되는 방법 중 하나는 OpenSSL을 사용하거나, 개발자들 사이에서 인기 있는 도구인 Let’s Encrypt를 통해 무료 SSL 인증서를 생성하는 것입니다.
하지만 Let’s Encrypt는 실제 도메인에 대해서만 인증서를 발급하므로, 로컬 개발을 위해서는 자체 서명된 인증서(self-signed certificate)를 생성하는 방법을 주로 사용하며 아래는 OpenSSL을 사용하여 로컬 호스트용 자체 서명된 SSL 인증서를 생성하는 방법에 대하여 자세히 알아보도록 하겠습니다.
OpenSSL을 사용하여 자체 서명된 인증서 생성
OpenSSL 설치
대부분의 UNIX 기반 시스템(리눅스, macOS 등)에는 OpenSSL이 이미 설치되어 있지만 간혹 Windows 사용자의 경우, OpenSSL을 별도로 설치해야 할 수 있습니다.
프라이빗 키 생성
터미널에서 다음 명령어를 입력하여 프라이빗 키를 생성합니다.
openssl genrsa -out localhost.key 2048
CSR(Certificate Signing Request) 생성
생성한 프라이빗 키를 사용하여 CSR을 생성합니다.
CSR은 인증서 발급기관(CA)에게 인증서를 발급받기 위한 요청 파일로서 로컬 호스트 인증서의 경우 자체 서명할 것이므로, 이 단계는 인증서 정보를 입력해줘야 합니다.
openssl req -new -key localhost.key -out localhost.csr
이 과정에서 여러분의 정보를 입력하라는 명령이 나올 것입니다.
“Common Name” 항목에는 로컬 개발을 위해 사용하는 도메인 이름(예: localhost, 또는 개발 중인 실제 도메인)을 입력합니다.
인증서 발급
마지막으로, CSR과 프라이빗 키를 사용하여 자체 서명된 SSL 인증서를 발급합니다.
openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt
이 명령은 CSR에 서명하여, 유효 기간이 365일인 인증서(localhost.crt
)를 생성하며 유효 기간은 필요에 따라 조정할 수 있습니다.
인증서 설치 및 웹 서버 구성
생성된 localhost.key
및 localhost.crt
파일을 웹 서버에 설치하고, HTTPS를 사용하도록 서버를 구성할 수 있으며 이 과정은 사용하는 웹 서버(예: Apache, Nginx, Node.js 등)에 따라 다를 수 있습니다.
자체 서명된 인증서를 사용할 때는, 브라우저가 이를 신뢰하지 않을 수 있으므로, 첫 접속 시 예외를 추가하여 수동으로 신뢰하도록 설정해야 할 수 있습니다. 이 방법은 로컬 개발 환경에서의 사용에 적합하며, 실제 운영 환경에서는 신뢰할 수 있는 CA로부터 발급받은 인증서를 사용해야 합니다.