Nginx에 SSL 인증서 추가

Nginx에 SSL 인증서 추가



이 튜토리얼에서는 nginx 웹 서버에 Namecheap ssl 인증을 추가하는 방법에 대해 설명합니다.


전제 조건

Purchased Namecheap Domain name + SSL

Server is remote accessible with proper software installed



SSL 인증 생성





인증서 경로는 나중에 nginx 구성에서 참조해야 합니다.

이 예에서는 /root를 경로로 사용합니다.

# Key
/root/example.com.key

# CSR
/root/example.com.key.com.csr

# SSL Bundle
/root/example.com.key_com.crt
/root/intermediate.crt

# SSL Cert
/root/example.com.key.com.chained.crt

CSR 생성



CSR에 의해 생성된 인증서 서명 요청( openssl )은 프로세스를 초기화하는 데 사용됩니다.
  • newKey rsa:2048
  • 새 개인 키 및 인증서 생성
  • 사용 rsa:2048

  • 노드
  • 개인 키를 암호화하지 않음

  • 키아웃/$PATH/example.com.key
  • /$PATH/example.com.key.com.csr 출력

  • openssl req \
        -newkey rsa:2048 \ 
        -nodes \
        -keyout example.com.key \
        -out example.com.key.com.csr
    

    Namecheap에 제출



    cat을 사용하여 csr의 값을 출력합니다.
    내용을 복사하여 Namecheap SSL Vendor CSR 단계에 붙여넣습니다.

    cat example.com.key.com.csr
    

    SSL 번들 다운로드



    SSL 공급업체에서 SSL 인증서를 생성하는 데 사용할 SSL 번들을 이메일로 보내드립니다.


    중급.crt

    콘텐츠 양식example.com.ca-bundle을 복사하고 nano을 사용하여 inermediate.crt라는 파일에 서버에 붙여넣습니다.

    nano intermediate.crt
    



    key_com.crt

    콘텐츠 양식example.com.crt을 복사하여 서버의 파일example.com.key_com.crt에 붙여넣습니다.

    nano example.com.key_com.crt
    



    chained.crt

    cat 및 redirect > 명령을 사용하여 두 인증서의 내용을 하나의 파일로 결합합니다.

    cat example.com.key_com.crt intermediate.crt > example.com.key.com.chained.crt
    

    Nginx 기본 구성


    cat /etc/nginx/sites-enabled/default를 실행하여 편집할 구성을 확인합니다.

    리디렉션 HTTP:80 -> HTTPS:443



  • server_name $IP_ADDRESS $DOMAIN_NAME;

  • rewrite ^/(.*) https://example.com/$1 영구;

  • pcre 정규식
  • HTTPS URI
  • 영구 301 리디렉션


  • server {
        listen 80;
        server_name 192.168.0.1 example.com;
        rewrite ^/(.*) https://example.com/$1 permanent;
    }
    

    HTTPS 듣기:443



  • ssl_certificate/$PATH/example.com.chained.crt;

  • ssl_certificate_key/$PATH/example.com.key;

  • ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  • 지원되는 OpenSSL 프로토콜


  • ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
  • openssl ciphers


  • ssl_prefer_server_ciphers 켜짐;
  • SSLv3 및 TLS를 사용하는 클라이언트를 통한 사용자 서버 암호화


  • server {
        listen 443 ssl;
        server_name 192.168.0.1 example.com;
    
        ssl_certificate /root/example.com.chained.crt;
        ssl_certificate_key /root/example.com.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
        ssl_prefer_server_ciphers on;
    
        root /var/www;
        index index.html;
    
        location / {}
    }
    

    Nginx 다시 시작




    변경 사항 확인


    nginx -t
    



    서버 다시 시작


    service nginx restart
    

    좋은 웹페이지 즐겨찾기