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


11

내 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/

체인의 인증서에 AIA 확장에 OCSP URL이 설정되어 있습니까?
garethTheRed

1
@Braiam-올바른 문서에 연결 했습니까? 거기에는 OCSP에 대한 언급이 없습니다. 그 댓글을 +1 한 사람에게 먼저 읽어 보셨습니까?
garethTheRed

@garethTheRed 인증서에서 OCSP URL을 추가하기 위해 게시물을 편집했습니다.
ST-DDT

@Braiam 나는 당신의 링크 된 문서를 읽었으며 AFAICT는 거기에 설명 된대로 모든 것을했습니다. (보안 및 내 질문과 관련이없는 cronjob 제외)
ST-DDT

큰! 저기에있어. 불행히도, 나는 nginx를 많이 다루지 않았으므로 실제로 구성하는 데 도움을 줄 수 없습니다. URL이 실제로 있었는지 여부는 가장 먼저 떠 올랐습니다. 다른 유일한 생각은 당신 fullchain.pemchain.pem파일입니다-그것들은 동일합니까? ssl_trusted_certificate지시어도 fullchain.pem파일을 사용 해서는 안 됩니까?
garethTheRed

답변:


10

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

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;

자세한 내용은 여기 를 참조 하십시오 .


니스, 이것은 내 nginx conf를 단순화하고 잘 작동합니다!
Shautieh

이 사이트 ssldecoder.org에서 힌트를 테스트해도 여전히 오류가 발생 합니까?
Alexander Schranz '10

여러 SSL이있을 때 문제를 해결 했으므로 모든 블록에서 활성화해야합니다. 그렇지 않으면 nginx가 자동으로 실패합니다.
Alexander Schranz

9

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

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;

구성을 다시로드

중요 : 브라우저를 열고 웹 페이지에 한 번 액세스하십시오.

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

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)

맨 아래 에도 인증서를 암호화합시다가 기본 신뢰할 수있는 인증서 저장소에 없습니다. (나는 SSL 경험이별로 없으므로 잘못되었을 수 있습니다)

서버에서 다음 cmd를 실행하면 오류가 표시되지 않습니다.

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

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

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

현재 OCSP 응답은 ssllabs 테스트에 의해 선택되지 않습니다. 인증서 암호화하자가 아직 기본 신뢰할 수있는 인증서 저장소에 없기 때문이라고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.