มา 'เข้ารหัส - nginx - การเย็บเล่ม OCSP


11

ฉันต้องการเปิดใช้งานการเย็บเล่ม OCSP ในเซิร์ฟเวอร์ nginx ของฉัน ฉันกำลังใช้

  • รุ่น 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
    • Let's Encrypt Authority X1
      • myexample.org

แก้ไข:

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

ใบรับรองในเครือของคุณมีการตั้งค่า OCSP URL ในส่วนขยาย AIA หรือไม่
garethTheRed

1
@Braiam - คุณเชื่อมโยงกับเอกสารที่ถูกต้องหรือไม่ ไม่มีการกล่าวถึง OCSP ในนั้น สำหรับใครก็ตามที่ +1 ความคิดเห็นนั้น - คุณอ่านมาก่อนหรือไม่
garethTheRed

@garethTheRed ฉันได้แก้ไขโพสต์ของฉันเพื่อเพิ่ม URL OCSP จากใบรับรอง
ST-DDT

@Braiam ฉันได้อ่านเอกสารที่เชื่อมโยงแล้วและ AFAICT ฉันทำทุกอย่างตามที่อธิบายไว้ในนั้นอย่างถูกต้อง (ยกเว้น cronjob ซึ่งไม่เกี่ยวข้องกับความปลอดภัยหรือคำถามของฉัน)
ST-DDT

ที่ดี! มันอยู่ที่นั่น ขออภัยฉันไม่ได้จัดการกับ nginx มากดังนั้นไม่สามารถช่วยคุณกำหนดค่าได้ ไม่ว่า URL นั้นจริงหรือไม่มีสิ่งแรกที่ผุดขึ้นมาในใจ ความคิดอื่น ๆ ของคุณคือfullchain.pemและchain.pemไฟล์ของคุณ- มันเหมือนกันหรือไม่? ssl_trusted_certificateคำสั่งไม่ควรใช้fullchain.pemไฟล์หรือไม่
garethTheRed

คำตอบ:


10

หลังจากการตั้งค่า nginx มาตรฐานคุณไม่ควรระบุssl_trusted_certificatechain ต่อไปนี้ควรเพียงพอ:

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 ของฉันง่ายขึ้นและทำงานได้ดีเช่นกัน!
Shautieh

ฉันยังได้รับข้อผิดพลาดเมื่อทดสอบกับเว็บไซต์นี้ssldecoder.orgคำใบ้ใด ๆ ?
Alexander Schranz

ทำการแก้ไขปัญหาเมื่อคุณมี 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)

ที่ด้านล่างเช่นกันใบรับรองการเข้ารหัสของ Let's ยังไม่อยู่ในที่เก็บใบรับรองที่เชื่อถือได้เริ่มต้น (ฉันไม่มีประสบการณ์ SSL มากดังนั้นฉันอาจผิด)

ข้อผิดพลาดจะไม่ปรากฏขึ้นหากคุณเรียกใช้ cmd ต่อไปนี้บนเซิร์ฟเวอร์:

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

หลังจากนั้นคุณสามารถทดสอบเซิร์ฟเวอร์ของคุณโดยใช้:

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

โปรดทราบว่าในขณะนี้การทดสอบ OCSP จะไม่ได้รับการทดสอบ ssllabs ฉันถือว่านี่เป็นเพราะใบรับรองการเข้ารหัสของ Let's ยังไม่ได้อยู่ในร้านค้าใบรับรองที่เชื่อถือได้เริ่มต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.