Xác nhận OCSP - không thể có được chứng chỉ nhà phát hành địa phương


17

Tôi mới cài đặt SSL từ đầu và đã thực hiện các bước đầu tiên. Tôi đã mua chứng chỉ SSL từ RapidSSL cho tên miền của mình và làm theo các bước để cài đặt chứng chỉ. Nói chung, chứng chỉ hợp lệ và hoạt động trên máy chủ web của tôi (nginx v1.4.6 - Ubuntu 14.04.1 LTS), nhưng nếu tôi đang cố gắng kích hoạt OCSP OCSP, tôi sẽ gặp lỗi sau trong lỗi nginx của mình.log:

Không thành công OCSP_basic_verify ()

Tôi cũng đã thử nó với lệnh này từ dòng lệnh:

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

Và đã nhận được lỗi "tương tự" như trong lỗi của tôi.log:

[...] Phiên SSL: Giao thức: TLSv1.2 Mật mã: ECDHE-RSA-AES256-GCM-SHA384 [...] Thời gian bắt đầu: 1411583991 Thời gian chờ: 300 (giây) Xác minh mã trả về: 20 (không thể nhận cục bộ giấy chứng nhận nhà phát hành)

Nhưng nếu tải xuống GeoTrust Root Certificat và thử nó với lệnh này:

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

Xác minh là ok:

[...] Phiên SSL: Giao thức: TLSv1.2 Mật mã: ECDHE-RSA-AES256-GCM-SHA384 [...] Thời gian bắt đầu: 1411583262 Thời gian chờ: 300 (giây) Xác minh mã trả về: 0 (ok)

Vì vậy, bằng cách nào đó, chứng chỉ gốc GeoTrust không được tìm thấy / phân phối.

Cấu hình trang web nginx của tôi:

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 đã viết trong tài liệu của mình rằng tôi nên thêm các chứng chỉ sau vào ssl.crt theo thứ tự sau:

  1. myserver.crt
  2. Gói CA trung gian (RapidSSL SHA256 CA - G3)
  3. Gói CA trung gian (GeoTrust Global CA)

Tôi cũng vậy...

Ngay bây giờ tôi không biết mình đang làm gì sai ... hy vọng mọi người ở đây có thể giúp tôi.

Cảm ơn bạn!

Câu trả lời:


17

Hai lỗi đó không liên quan mặc dù thông báo lỗi giống nhau.

[...] Phiên SSL: Giao thức: TLSv1.2 Mật mã: ECDHE-RSA-AES256-GCM-SHA384 [...] Thời gian bắt đầu: 1411583991 Thời gian chờ: 300 (giây) Xác minh mã trả về: 20 (không thể nhận cục bộ giấy chứng nhận nhà phát hành)

Lỗi trên đã được ban hành lệnh openssl_client . Theo giải thích của Florian Heigl, bạn gặp phải lỗi này vì openssl_client cần chứng chỉ Globalsign Root /etc/ssl/certs.


Không thành công OCSP_basic_verify ()

Đối với lỗi này, nó được cấp bởi thường trình nginx ocsp , đặc biệt là khi bạn thêm ssl_stapling_verify on;dòng trong nginx.conf.

Dưới đây một số đoạn trích từ tài liệu của ssl_stapling_verifyđể giải thích lý do tại sao nó ném lỗi

Cú pháp: ssl_stapling_verify trên | tắt;

Cho phép hoặc vô hiệu hóa xác minh phản hồi OCSP của máy chủ.

Để xác minh hoạt động, chứng chỉ của tổ chức phát hành chứng chỉ máy chủ, chứng chỉ gốc và tất cả các chứng chỉ trung gian phải được định cấu hình là đáng tin cậy bằng cách sử dụng lệnh ssl_trusty_cert ve.

Nói cách khác, bạn cần cung cấp (2) Gói CA trung gian (RapidSSL SHA256 CA - G3)(3) Gói CA trung gian (GeoTrust Global CA) để ssl_trusted_certificatechỉ thị.

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

và thêm ocsp-chain.crtvào ssl_trusted_certificatechỉ thị.


Cảm ơn bạn rất nhiều! Tôi cũng đã thử điều này, nhưng luôn kiểm tra nó bằng lệnh cli.
kapale

Nơi nào chúng ta có được các certs trung gian?
ingo

1

Tôi chỉ có thể trả lời một phần của điều này.

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

sẽ cần chứng chỉ gốc Globalsign trong / etc / ssl / certs. Có một gói ca-chứng chỉ, bạn đã cài đặt chưa?


Tôi không hiểu tại sao nên sử dụng chứng chỉ Globalsign Root khi giao dịch với RapidSSL và GeoTrust ?? chúng khác với Globalsign ... hãy sửa tôi nếu tôi sai!
Trang web kỹ thuật số
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.