我在我的网站上实施了SSL,但Chrome上的绿色条闪烁片刻然后消失了。我的证书由Comodo签署。 AFAIK我的nginx配置是正确的,但我似乎无法让https坚持下去。我的8080重定向工作,我的证书有chmod 600,并且在指定的目录中。
有什么想法吗?
server {
listen 8080;
server_name *.example.com;
return 301 https://www.example.com;
}
server {
listen 443 ssl;
server_name *.example.com;
ssl_certificate /home/ubuntu/example.com.ssl/example.com.crt;
ssl_certificate_key /home/ubuntu/example.com.ssl/example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://localhost:3333;
}
}
编辑:我的证书由受信任的机构签署。
答案 0 :(得分:0)
正如评论中所述,https配置设置最好通过此工具运行您的网站进行测试:https://www.ssllabs.com/ssltest/
您提到遗漏了一些CA文件,因此我猜测您的证书只是您网站的证书而不是完整链回到根证书?
通过查看您的证书文件可以轻松验证这一点:
ssl_certificate /home/ubuntu/example.com.ssl/example.com.crt;
如果此文件包含一个证书,那么(只有一个BEGIN CERTIFICATE行)就是问题。它应包含至少两个证书(对于三个证书链),如果您的CA使用更长的证书链,则可能包含更多证书。根证书不需要(也不应该是!)在浏览器已知的文件中。
因此,获取中间证书(它们应该已经提供了您的证书 - 但也可以here for Comodo),然后合并到一个文件中:
cat example.com.crt intermediate.crt > example.com_with_chain.crt
或者如果你有两个中间体,那么如下所示(其中intermediate1.crt os是颁发证书的证书,它由intermediate2.crt颁发,由浏览器信任的root证书颁发):
cat example.com.crt intermediate1.crt intermediate2.crt > example.com_with_chain.crt
请注意,订单很重要。然后更新您的ssl_certificate
配置以指向这些组合的crt,然后重新启动Nginx并重复ssltest测试。