작은숲:위키노트/Nginx HTTPS 설정

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
Utolee90 (토론 | 기여)님의 2021년 3월 28일 (일) 12:30 판 (문자열 찾아 바꾸기 - "분류:공유" 문자열을 "분류:위키노트/공유" 문자열로)

Nginx에서 HTTPS 연결을 설정하는 것은 server 블럭에서 한다. 아파치와 비교해서 크게 다른 것은 없다. 다만 SSL 인증서 설정할 때 차이가 있으니 이것만 주의하면 된다.

server {
    listen      80;
    server_name www.example.com;
    return      301 https://www.example.com$request_uri;
}server {
    listen      443 ssl;
    server_name www.example.com;
    root        /var/www/example;
    access_log  /var/log/nginx/example-access.log  main;
    ssl             on;
    ssl_protocols   SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers     ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW;
    ssl_prefer_server_ciphers   on;
    ssl_certificate     /etc/pki/ssl-unified.crt;
    ssl_certificate_key /etc/pki/ssl.key;
}

첫 번째 server 블럭은 80 포트, 즉 HTTP로 접속하면 HTTPS로 보내준다. 실제 SSL 적용은 두 번째 server 블럭에서 하고 있다. 아파치에서는 mod_ssl 확장 기능을 올려야하고 서버에서 SSL에 대한 설정을 따로 해야 하지만 Nginx에서는 server 블럭에서 listen 443 ssl;ssl on;을 설정하면 된다. 아파치의 가상 호스트 설정에서 SSL 설정은 대략 아래와 비슷하다.

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/ssl.crt
SSLCertificateKeyFile /etc/pki/ssl.key
SSLCertificateChainFile /etc/pki/sub.class1.server.ca.pem
SSLCACertificateFile /etc/pki/startssl/ca.pem

이처럼 아파치에서는 중계자 인증서(sub.class1.server.ca.pem)와 CA 인증서(ca.pem)를 따로 설정하지만 Nginx에서는 서버 인증서(ssl.crt)에 함께 넣어서 설정한다. 그래서 Nginx에서 SSL 설정을 하기 위해서는 이 세 인증서를 합해야 한다.

# cat ssl.crt sub.class1.server.ca.pem ca.pem > ssl-unified.crt

이 부분만 주의하면 크게 문제되는 부분은 없다.

참고

이 작은숲 문서의 출처는 위키노트의 위키노트/Nginx HTTPS 설정 문서입니다.