나의 잡다한 노트 및 메모

Let's Encrypt로 공인 CA 인증서 만들어 SSL/TLS 설정 본문

보안

Let's Encrypt로 공인 CA 인증서 만들어 SSL/TLS 설정

peanutwalnut 2024. 12. 17. 22:03

Jenkins가 https 통신을 할 수 있도록 앞단에 리버스 프록시(nginx)를 달아놓으려고 한다.

이때, 인증서를 만들 때, Let's Encrypt로 만드려고 한다. 

 

Let's Encrypt는 certbot 이라는 것을 설치해야한다.

공인 CA 인증서로 활용이 가능해서 프로덕션용으로도 쓸 수 있다고 한다.

 

openssl을 활용해 인증서를 만드는 것은 self-signed 인증서로 내부 네트워크에서만 쓰거나 테스트 용으로 쓰는 것이 좋다. 프로덕션용으로는 좋지 않다고 한다. 

 

먼저, 웹 서버에 연결할 도메인이 있어야 한다. 해당 도메인의 A 레코드가 서버의 공인 IP로 올바르게

설정돼 있어야 한다.

 

certbot을 설치하고, 인증서를 발급받아야한다.

 

인증서 발급 ( standalone 모드 )

여기서 standalone 모드는 기존 웹 서버를 사용하지 않고, certbot이 자체적으로 간단한 웹 서버를 실행해 인증 과정을 처리하는 모드이다.

 

  • sudo certbot certonly --standalone -d jenkins.example.com
    • Let’s Encrypt가 HTTP-01 챌린지를 통해 우리가 사용할 도메인을 검증 후 /etc/letsencrypt/live/jenkins.example.com/ 경로에 인증서를 발급합니다.
  • 발급 성공 시
    • fullchain.pem, privkey.pem 등 파일들이 /etc/letsencrypt/live/jenkins.example.com/ 아래에 위치

 

 

그리고 인증서를 쓰기 위해 nginx 컨테이너에서 volume 지정을 해준다.

 

nginx.conf 의 일부 설정이다. 

# HTTPS 서버

server {

listen 443 ssl;

server_name jenkins.example.com; # 인증서/키 경로 (Let's Encrypt 발급 파일) ssl_certificate /etc/letsencrypt/live/jenkins.example.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/jenkins.example.com/privkey.pem;

 

 

 

간단하다. 추가로 Let's Encrypt 인증서는 90일 유효기간이므로 갱신이 필요하다.