암호화하자 - nginx - OCSP 스테이플링

암호화하자 - nginx - OCSP 스테이플링

내 nginx 서버에서 OCSP 스테이플링을 활성화하고 싶습니다. 나는 그것을 사용하고 있다

  • nginx 버전: nginx/1.6.2
  • 데비안
  • 인증서를 암호화하자

저는 이 문제에 대해 실제로 경험이 없기 때문에 이것은 사소한 질문일 수 있습니다.

이것은 내 nginx 보안 구성입니다.

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/private/dhparams_4096.pem;

내 사이트/서버 보안 구성은 다음과 같습니다.

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

    # All files have been generated by Let's encrypt
    ssl_certificate /etc/letsencrypt/live/myexample.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myexample.org/privkey.pem;

    # Everything below this line was added to enable OCSP stapling
    # What is that (generated file) and is that required at all?
    ssl_trusted_certificate /etc/letsencrypt/live/myexample.org/chain.pem;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

나는 이것이 OCSP 스테이플링을 활성화하기에 충분하다는 것을 읽었습니다.

하지만 내가 그것을 사용하여 테스트하면

 openssl s_client -connect myexample.org:443 -tls1 -tlsextdebug -status

다음과 같은 응답을 받게 됩니다.

TLS server extension "renegotiation info" (id=65281), len=1
0001 - <SPACES/NULS>
TLS server extension "EC point formats" (id=11), len=4
0000 - 03 00 01 02                                       ....
TLS server extension "session ticket" (id=35), len=0
TLS server extension "heartbeat" (id=15), len=1
0000 - 01                                                .
OCSP response: no response sent
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/CN=myexample.org
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
[...]

특히

OCSP response: no response sent

내가 뭘 잘못했나요?

인증서 계층:

  • DST 루트 CA X3
    • 권한을 암호화하자 X1
      • myexample.org

편집하다:

OCSP: URI: http://ocsp.int-x1.letsencrypt.org/
CA-Issuer: URI: http://cert.int-x1.letsencrypt.org/

답변1

ssl_trusted_certificate표준 nginx 설정에 따라 체인을 지정할 필요가 없습니다 . 다음이면 충분합니다.

ssl_certificate /etc/letsencrypt/live/myexample.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.org/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;

바라보다여기자세한 배경 정보를 알아보세요.

답변2

내가 찾은 튜토리얼을 기반으로 솔루션을 찾았습니다.거기:

cd /etc/ssl/private
wget -O - https://letsencrypt.org/certs/isrgrootx1.pem https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem https://letsencrypt.org/certs/letsencryptauthorityx1.pem https://www.identrust.com/certificates/trustid/root-download-x3.html | tee -a ca-certs.pem> /dev/null

사이트/서버 구성에 추가하세요.

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;

구성을 다시 로드하세요.

중요: 브라우저를 열고 페이지를 한 번 방문하세요.

그런 다음 다음 명령을 사용하여 로컬에서 서버를 테스트할 수 있습니다.

openssl s_client -connect myexample.org:443 -tls1 -tlsextdebug -status

아마도 다음과 같은 유효한 답변을 받게 될 것입니다.

OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1

하나 얻으면 걱정하지 마세요

Verify return code: 20 (unable to get local issuer certificate)

바닥에게다가, Let's encrypt 인증서는 아직 기본 신뢰할 수 있는 인증서 저장소에 없습니다. (저는 SSL에 대한 경험이 많지 않아 틀릴 수도 있습니다)

서버에서 다음 cmd를 실행하면 오류가 나타나지 않습니다.

openssl s_client -CApath /etc/ssl/private/ -connect myexample.org:443 -tls1 -tlsextdebug -status

그런 다음 다음 명령을 사용하여 서버를 테스트할 수 있습니다.

https://www.digicert.com/help/

현재 ssllabs 테스트에서는 OCSP 응답을 받지 못합니다. 이는 Let's Encrypt 인증서가 아직 기본 신뢰할 수 있는 인증서 저장소에 없기 때문이라고 생각합니다.

관련 정보