OCSPvalidation – 无法获得本地发行者证书

我是新手,从头开始设置SSL,并完成了我的第一步。 我从RapidSSL为我的域名购买了一个SSL证书,然后执行安装证书的步骤。 一般来说,这个证书是有效的,在我的networking服务器(nginx v1.4.6 – Ubuntu 14.04.1 LTS)上工作,但是如果我想激活OCSP OCSP,那么在我的nginx error.log中会出现以下错误:

请求证书状态时,OCSP_basic_verify()失败(SSL:错误:27069065:OCSP例程:OCSP_basic_verify:证书validation错误:validation错误:无法获取本地颁发者证书),responder:gv.symcd.com

我也尝试了这个命令从命令行:

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

并得到了像我的error.log中的“相同”的错误:

[…] SSL会话:协议:TLSv1.2密码:ECDHE-RSA-AES256-GCM-SHA384开始时间:1411583991超时:300(秒)validation返回码:20发行人证书)

但是,如果下载GeoTrust Root Certificat并使用以下命令尝试:

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

validation是好的:

[…] SSL会话:协议:TLSv1.2密码:ECDHE-RSA-AES256-GCM-SHA384开始时间:1411583262超时:300(秒)validation返回码:0

所以不知何故GeoTrust根证书没有被发现/交付。

我的nginx网站configuration:

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. 中级CA Bundle(RapidSSL SHA256 CA – G3)
  3. 中级CA Bundle(GeoTrust Global CA)

所以我做了…

现在我不知道我在做什么错…希望这里的任何人都可以帮助我。

谢谢!

这两个错误是无关的,虽然错误信息是相同的。

[…] SSL会话:协议:TLSv1.2密码:ECDHE-RSA-AES256-GCM-SHA384开始时间:1411583991超时:300(秒)validation返回码:20(无法获取本地发行人证书)

上面的错误发出了openssl_client命令。 正如Florian Heigl解释的那样,你会得到这个错误,因为openssl_client需要/etc/ssl/certs的Globalsign Root /etc/ssl/certs


请求证书状态时,OCSP_basic_verify()失败(SSL:错误:27069065:OCSP例程:OCSP_basic_verify:证书validation错误:validation错误:无法获取本地颁发者证书),responder:gv.symcd.com

对于这个错误,它是由nginx的ocsp例程发出的,特别是当你添加ssl_stapling_verify on; 在nginx.conf中。

这里从ssl_stapling_verify 的文档中摘录一些解释为什么会引发错误

语法:ssl_stapling_verify on | closures;

启用或禁用服务器对OCSP响应的validation。

要使validation生效,应使用ssl_trusted_certificate指令将服务器证书颁发者,根证书和所有中间证书的证书configuration为可信。

换句话说,您需要提供(2)中级CA Bundle(RapidSSL SHA256 CA – G3)(3)中级CA Bundle(GeoTrust Global CA)ssl_trusted_certificate指令。

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

并将ocsp-chain.crt添加到ssl_trusted_certificate指令中。

我只能回答这个问题的一部分。

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

需要/ etc / ssl / certs中的Globalsign Root证书。 有一个电子证书包,你有安装吗?