我是新手,从头开始设置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中:
所以我做了…
现在我不知道我在做什么错…希望这里的任何人都可以帮助我。
谢谢!
这两个错误是无关的,虽然错误信息是相同的。
[…] 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证书。 有一个电子证书包,你有安装吗?