서버 ssl 설정

emmmm......................................................................................
인증서 가 져 오기
증 서 는 무료 와 비용 을 지불 하 는 것 이 있 고 널리 알려 진 무료 Let's Encrypt 도 있 습 니 다. 국내 에서 도 합작 의 무료 증 서 를 많이 내 놓 았 습 니 다. 예 를 들 어 구름 과 일곱 소 를 찍 는 것 도 무료 개방 신청 이 있 고 대부분 도 메 인 이름 입 니 다.
여러 개의 2 급 도 메 인 이름 을 동시에 지원 해 야 하기 때문에 저 는 cheapslsecurity 에서 comodo 개의 도 메 인 이름 인증 서 를 구 매 했 습 니 다.www 가 없 는 메 인 네 임 과 두 개의 도 메 인 네 임, 23 칼 을 포함 하고 한 개의 도 메 인 네 임 을 추가 하면 모두 32 칼 로 받 아들 일 수 있 습 니 다. 주문 할 수 있 습 니 다. PayPal 로 지불 할 수 있 습 니 다. 지불 이 성공 하면 개인 정 보 를 작성 할 수 있 습 니 다.
그리고 다음 단계 로 넘 어 갈 수 있 습 니 다.
대개 이렇게 해서 도 메 인 이름 을 쓰 고 도 메 인 이름 검증 방식 을 선택 합 니 다. 저 는 보통 CNAME 인증 을 선택 합 니 다. 도 메 인 이름 콘 솔 에 가서 분석 을 설정 하면 검증 을 통과 할 수 있 습 니 다.
다음은 .scr 파일 내용 을 작성 하 는 구역 입 니 다. 이 파일 은 서버 에 생 성 되 어야 합 니 다.
$ openssl req -new -newkey rsa:2048 -sha256 -nodes -out example.com.csr -keyout example.com.key -subj "/C=CN/ST=ZheJiang/L=HangZhou/O=Example Inc./OU=Web Security/CN=example.com"

# C:Country,      ,         , :CN     
# ST:State/Province,       
# L:Locality,      /   
# O:Organization,        
# OU:Organization Unit,      ;               ,     ,                   
# CN:Common Name,     

실행 후 두 개의 파일 example.com.csrexample.com.key 을 받 아 example.com.csr 의 내용 을 완전한 pem 형식 으로 사이트 에 제출 합 니 다.
다음 에 이 인증서 에 추가 해 야 할 하위 도 메 인 이름 www 을 선택 할 수 있 습 니 다. 마지막 으로 서버 종 류 를 선택 하면 형식 에 어떤 영향 을 미 칠 지 모 르 겠 습 니 다 (저 는 nginx server).
이상 완료 되면 새 페이지 가 있 습 니 다. 설정 해 야 할 CNAME 정보 가 포함 되 어 있 습 니 다. 설정 이 끝나 면 인증서 가 포 함 된 메 일 을 기다 리 고 있 습 니 다.
ssl 인증서 설정
받 은 메 일 압축 파일 에는 4 개의 파일 이 포함 되 어 있 습 니 다.
각각:
  • 루트 인증서 - AddTrustExternalCARoot.crt
  • 중급 증서 - COMODORSAAddTrustCA.crt
  • 중급 증서 - COMODORSADomainValidationSecureServerCA.crt
  • 도 메 인 네 임 인증서 - 93485680.crt
  • 여기에 인증서 체인 의 개념 이 있 습 니 다. 이 글 을 보면 알 수 있 습 니 다. 우리 가 해 야 할 일 은 이 몇 개의 인증 서 를 연결 하 는 것 입 니 다.
    $ cat 93485680.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl.bundle.crt

    그 다음 에 이 인증서 체인 을 이전에 생 성 된 example.com.csr, example.com.key 과 같은 곳 에 두 고 관리 하면 nginx 서버 를 설정 하 는 것 입 니 다.
    listen                443 ssl;
    server_name         example.com www.example.com;
    
    # ssl config
    ssl                    on;
    ssl_certificate        /etc/ssl/private/ssl.bundle.crt; #    
    ssl_certificate_key    /etc/ssl/private/example.com.key; #   
    # ssl_protocols   ssl_ciphers             SSL/TLS         
    ssl_protocols        TLSv1 TLSv1.1 TLSv1.2; #      ,Windows XP    
    ssl_ciphers            HIGH:!aNULL:!MD5; #   

    이 설정 이 완료 되면 nginx 를 다시 시작 하면 https 형식 으로 사 이 트 를 방문 할 수 있 습 니 다.
    기타
    https 접근 강제
    웹 사이트 에 강제로 https 형식 으로 접근 할 필요 가 있 으 면 HSTS (HTTP Strict Transport Security) 정책 을 추가 할 수 있 습 니 다.
    #    HSTS ,    https   
    add_header Strict-Transport-Security max-age=31536000;
    # add_header X-Frame-Options DENY;  #         iframe      
    add_header X-Content-Type-Options nosniff;

    그리고 다른 단독 server 설정 에서 도 메 인 이름 의 80 포트 를 감청 하고 https 링크 로 다시 설정 합 니 다.
    server {
        listen       80;
        server_name  example.com www.example.com;
        location / {
            return 301 https://example.com$request_uri;    #        
        }
    }

    전체 설정
    server {
        listen       443 ssl;
        server_name  example.com www.example.com;
    
          # ssl config
        ssl on;
        ssl_certificate      /etc/ssl/private/ssl.bundle.crt; #    
        ssl_certificate_key  /etc/ssl/private/example.com.key; #   
        
        #       ,        -       
        # openssl dhparam -out /etc/ssl/private/dhparam.pem 2048
        ssl_prefer_server_ciphers on;    #    Forward Secrecy
        ssl_dhparam /etc/ssl/private/dhparam.pem;
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;    #      ,Windows XP    
        ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
        keepalive_timeout 70;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        
        #    HSTS ,    https   
        add_header Strict-Transport-Security max-age=31536000;
        # add_header X-Frame-Options DENY;  #         iframe      
        add_header X-Content-Type-Options nosniff;
    
        location / {
            # root   /usr/share/nginx/html;
            # index  index.html index.htm;
            index index;
            # proxy_pass http://127.0.0.1:7001;
            proxy_pass http://127.0.0.1:7001/blog/index;
        }
    }

    emmmm..................................................................................

    좋은 웹페이지 즐겨찾기