목표:
1. certbot을 사용하여 Let's Encrypt 인증서를 설치, 인증서를 수동으로 발급 및 연결
2. 발급받은 https 인증서를 Nginx 웹 서버에 적용해 서버 띄우기
#apt install certbot -y
# certbot certonly --manual -d *.bitsns.site --preferred-challenges dns-01
핵심 명령어 설명
--preferred-challenges dns-01
DNS 챌린지를 사용하여 도메인 소유권을 검증하겠다는 것을 지정certbot certonly --manual
: certbot 프로그램을 실행하여 인증서만(certonly) 수동으로 인증 과정을 처리하여 발급(인증서 파일만 제공)
# cd /etc/letsencrypt/archive# ls
bitsns.site www.bitsns.site
# cd bitsns.site
# wget http://apps.identrust.com/roots/dstrootcax3.p7c
# ls
cert.pem chain.pem dstrootcax3.p7c fullchain.pem privkey.pem README
# openssl pkcs7 -inform der -in dstrootcax3.p7c -out dstrootcax3.pem -print_certs
==> OpenSSL을 사용하여 DER 형식의 PKCS#7 인증서 파일(dstrootcax3.p7c)을 PEM 형식(dstrootcax3.pem)으로 변환하고, 변환된 인증서의 내용을 출력
# ls
cert1.pem dstrootcax3.p7c fullchain1.pem root@1.235.229.87
chain1.pem dstrootcax3.pem privkey1.pem
# cat dstrootcax3.pem >> fullchain1.pem
먼저, 현재 시스템에 설치된 인증서의 목록을 확인하려면 다음의 명령어를 사용합니다:
# certbot certificates
다음 명령어를 사용하여 해당 인증서를 삭제합니다:
# certbot delete --cert-name [인증서 이름]
ex ) certbot delete --cert-name www.bitsns.site
-인증서 갱신: 삭제 후 인증서를 갱신
certbot renew
- "Renewal configuration file /etc/letsencrypt/renewal/bitsns.site.conf produced an unexpected error: fullchain does not match cert + chain for bitsns.site!" = bitsns.site에 대한 갱신(renewal) 설정에 문제가 있다는 것
# certbot certificates
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
http {
...
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
ssl_certificate /etc/letsencrypt/live/bitsns.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bitsns.site/privkey.pem;
ssl_dhparam /etc/letsencrypt/ssl_dhparam.pem;
==> 경로에 맞게 SSL/TLS 연결을 위한 인증서와 개인 키의 경로를 지정
==> Diffie-Hellman 파라미터를 사용하여 Perfect Forward Secrecy를 강화하기 위한 설정
....
server {
listen 80;
server_name www.bitsns.site fail_timeout=0;
return 308 https://www.bitsns.site$request_uri;
}
==> 80 port redirection code
server {
listen 443 ssl;
server_name www.bitsns.site;
root html;
# 요청된 URL에 해당하는 파일을 서버에서 찾을 때 기본 경로로 html 디렉토리를 사용하라는 것
}
==> SSL/TLS를 사용하여 443 포트에서 수신 대기하도록 설정하는 서버 블록
}
# vim www.bitsns.site
server {
listen 443;
server_name www.bitsns.site;
location / {
root /var/www/html/index.nginx-debian.html;
try_files $uri $uri/ /index.html;
index index.html;
}
}
# nginx -t
# systemctl status nginx ==> nginx 상태 확인
# systemctl restart nginx ==> nginx 재가동
검은 배경에 흰 글씨뿐인 CLI에서 초롯빛의 active라고 표시된 nginx 활동 상태는 너무 감동이다....(난 F...)
참고 사이트 :
- https://manvscloud.com/?p=1445 = [NCLOUD] LET’S ENCRYPT + CERTIFICATE MANAGER로 LOAD BALANCER에 인증서 적용하기
- https://happycloud-lee.tistory.com/238 = openssl로 SSL인증서 만들기와 Mac+Chrome에서 ERR_CERT_INVALID 에러 조치하기
- https://navercloudplatform.medium.com/%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EC%84%B8%EC%9A%94-lets-encrypt-%EB%AC%B4%EB%A3%8C-ssl-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89%EB%B6%80%ED%84%B0-%EB%93%B1%EB%A1%9D-%EA%B4%80%EB%A6%AC%EA%B9%8C%EC%A7%80-feat-certificate-manager-d259f469e83d = [이렇게 사용하세요!] Let’s Encrypt 무료 SSL 인증서 발급부터 등록, 관리까지 (feat. Certificate Manager)