최근 Letsencrypt 를 통해 SSL 인증서를 재발급받는데 최근 받은 인증서의 설정에서 작은 문제가 있었다.
certbot-auto 를 실행시키면 Git에서 새로운 파일을 다운로드 받는데 그런 업데이트 과정을 거치면서 발생한 문제 같아 보인다.
아무튼 업데이트를 새로 받으면 ERR_SSL_PROTOCOL_ERROR 이라는 에러가 나타나고, 사이트에 접속할 수 없는 문제가 발생한다.
크롬에서는 다음과 같은 에러를 띄운다.
파이어폭스에서는 다음과 같은 에러를 띄운다
원인을 찾을 수 없는 문제가 제일 스트레스인데.. 이번 경우가 그랬다. 파이어폭스나, 크롬 등에서 인증서가 이상한 것 같다는 이유로 연결 자체가 성립이 되지 않으니 NGINX에서도 로그가 남지 않았다.
다음은 curl 등으로 직접 서비스에 접속했을 때 나타나는 오류다.
이 문제는 특징이 있었는데 설정을 수동으로 잡아둔 일부 서비스의 경우에는 문제가 없었다.
따라서 letsencrypt의 업데이트 오류라고 생각을 했고 다음과 같이 NGINX 설정을 수동으로 수정했다.
# /etc/nginx/conf.d/myconf.conf
#NGINX 설정
#include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
#ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
server {
# Certbot 에서 생성한 2가지 파일은 주석처리 해준다
---
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem; # dhparam 이 다른 폴더로 이미 설정되어 있다면 그 설정으로 맞춘다.
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES1
28-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE
-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SH
A256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-
RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
---
}
이렇게 하니 문제가 해결되었다. 많은 사람에게 도움이 되길 바라며 글을 마친다.