การตรวจสอบ OCSP - ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น


17

ฉันใหม่ในการตั้งค่า SSL ตั้งแต่เริ่มต้นและทำตามขั้นตอนแรกแล้ว ฉันซื้อใบรับรอง SSL จาก RapidSSL สำหรับโดเมนของฉันและทำตามขั้นตอนเพื่อติดตั้งใบรับรอง โดยทั่วไปใบรับรองนั้นใช้ได้และทำงานบนเว็บเซิร์ฟเวอร์ของฉัน (nginx v1.4.6 - Ubuntu 14.04.1 LTS) แต่ถ้าฉันพยายามเปิดใช้งาน OCSP OCSP ฉันได้รับข้อผิดพลาดต่อไปนี้ในข้อผิดพลาด nginx ของฉัน:

OCSP_basic_verify () ล้มเหลว (SSL: ข้อผิดพลาด: 27069065: รูทีน OCSP: OCSP_basic_verify: ข้อผิดพลาดการตรวจสอบใบรับรอง: ตรวจสอบข้อผิดพลาด: ตรวจสอบข้อผิดพลาด: ไม่สามารถรับใบรับรองผู้ออกท้องถิ่น) ในขณะที่ขอสถานะใบรับรองตอบกลับ: gv.symcd.com

ฉันลองด้วยคำสั่งนี้จากบรรทัดคำสั่ง:

openssl s_client -connect mydomain.tld: 443 2> & 1 </ dev / null

และได้รับข้อผิดพลาด "เดียวกัน" เหมือนใน error.log ของฉัน:

[... ] SSL-Session: โปรโตคอล: TLSv1.2 รหัส: ECDHE-RSA-AES256-GCM-SHA384 [... ] เวลาเริ่มต้น: 1411583991 หมดเวลา: 300 (วินาที) ยืนยันรหัสที่ส่งคืน: 20 (ไม่สามารถรับได้ในท้องถิ่น ใบรับรองผู้ออก)

แต่ถ้าดาวน์โหลด GeoTrust Root Certificat และลองด้วยคำสั่งนี้:

openssl s_client - เชื่อมต่อ mydomain.tld: 443 -CAfile GeoTrust_Global_CA.pem 2> & 1 </ dev / null

การยืนยันก็โอเค:

[... ] SSL-Session: Protocol: TLSv1.2 รหัส: ECDHE-RSA-AES256-GCM-SHA384 [... ] เวลาเริ่มต้น: 1411583262 หมดเวลา: 300 (วินาที) ตรวจสอบรหัสที่ส่งคืน: 0 (ok)

ดังนั้นไม่พบ GeoTrust Root Cert

การกำหนดค่าไซต์ nginx ของฉัน:

server {
    listen 443;
    server_name mydomain.tld;

    ssl on;
    ssl_certificate /etc/ssl/certs/ssl.crt;
    ssl_certificate_key /etc/ssl/private/ssl.key;


    # Resumption
    ssl_session_cache shared:SSL:20m;

    # Timeout
    ssl_session_timeout 10m;

    # Security options
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

    # OCSP Stapling
    # It means that you sent status info about your certificate along with the request,
    # instead of making the browser check the certificate with the Certificate Authority.
    # This removes a large portion of the SSL overhead, the CloudFlare post above explains it in more detail.
    ssl_stapling on;
    ssl_stapling_verify on;
    #ssl_trusted_certificate /etc/ssl/certs/ssl.pem;

    #resolver 8.8.8.8 8.8.4.4 valid=300s;
    #resolver_timeout 10s;

    # This forces every request after this one to be over HTTPS
    add_header Strict-Transport-Security "max-age=31536000";[...]};

RapidSSL เขียนในเอกสารของเขาว่าฉันควรเพิ่มใบรับรองต่อไปนี้ลงใน ssl.crt ด้วยลำดับต่อไปนี้:

  1. myserver.crt
  2. Bundle CA ระดับกลาง (RapidSSL SHA256 CA - G3)
  3. Bundle CA ระดับกลาง (GeoTrust Global CA)

ดังนั้นฉันจึง ...

ตอนนี้ฉันไม่รู้ว่าฉันทำอะไรผิด ... หวังว่าทุกคนที่นี่จะช่วยฉันได้

ขอขอบคุณ!

คำตอบ:


17

ข้อผิดพลาดทั้งสองนั้นไม่เกี่ยวข้องกันแม้ว่าข้อความแสดงข้อผิดพลาดจะเหมือนกัน

[... ] SSL-Session: โปรโตคอล: TLSv1.2 รหัส: ECDHE-RSA-AES256-GCM-SHA384 [... ] เวลาเริ่มต้น: 1411583991 หมดเวลา: 300 (วินาที) ยืนยันรหัสที่ส่งคืน: 20 (ไม่สามารถรับได้ในท้องถิ่น ใบรับรองผู้ออก)

ข้อผิดพลาดดังกล่าวถูกออกคำสั่งopenssl_client ตามที่อธิบายโดย Florian Heigl คุณจะได้รับข้อผิดพลาดนี้เนื่องจากความต้องการ openssl_client ใบรับรอง GlobalSign Root /etc/ssl/certsใน


OCSP_basic_verify () ล้มเหลว (SSL: ข้อผิดพลาด: 27069065: รูทีน OCSP: OCSP_basic_verify: ข้อผิดพลาดการตรวจสอบใบรับรอง: ตรวจสอบข้อผิดพลาด: ตรวจสอบข้อผิดพลาด: ไม่สามารถรับใบรับรองผู้ออกท้องถิ่น) ในขณะที่ขอสถานะใบรับรองตอบกลับ: gv.symcd.com

สำหรับข้อผิดพลาดนี้ออกโดยรูทีน nginx ocspโดยเฉพาะเมื่อคุณเพิ่มssl_stapling_verify on;บรรทัดใน nginx.conf

ข้อความที่ตัดตอนมาบางส่วนจากเอกสารของssl_stapling_verifyเพื่ออธิบายว่าทำไมจึงเกิดข้อผิดพลาด

ไวยากรณ์: ssl_stapling_verify on | ปิด;

เปิดใช้งานหรือปิดใช้งานการตรวจสอบการตอบสนองของ OCSP โดยเซิร์ฟเวอร์

สำหรับการตรวจสอบการทำงานใบรับรองของผู้ออกใบรับรองเซิร์ฟเวอร์ใบรับรองรูทและใบรับรองระดับกลางทั้งหมดควรได้รับการกำหนดค่าเป็นที่เชื่อถือได้โดยใช้คำสั่ง ssl_trusted_certificate

กล่าวอีกนัยหนึ่งคุณจะต้องให้(2) Intermediate CA Bundle (RapidSSL SHA256 CA - G3)และ(3) Intermediate CA Bundle (GeoTrust Global CA)ในssl_trusted_certificateคำสั่ง

cat GeoTrustGlobalCA.crt rapidsslG3.crt > ocsp-chain.crt

และเพิ่มocsp-chain.crtการssl_trusted_certificateสั่ง


ขอบคุณมาก! ฉันลองสิ่งนี้ด้วย แต่ทดสอบด้วยคำสั่ง cli เสมอ
kapale

เราจะได้รับสื่อกลางที่ไหน?
ingo

1

ฉันสามารถตอบเพียงบางส่วนของสิ่งนี้

openssl s_client -connect mydomain.tld: 443 2> & 1 </ dev / null

จะต้องมีใบรับรอง Globalsign ใน / etc / ssl / certs มีแพ็คเกจใบรับรอง CA คุณติดตั้งไว้หรือไม่?


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