我有Varnish负载平衡三个前端Rails服务器,Nginx充当FastCGI工作者的反向代理。昨天,我们的证书已过期,我从GoDaddy获得了一个新证书并安装了它。当直接访问静态资源时,我看到更新的证书,但是当从“虚拟子域”访问它时,我看到了旧证书。我的nginx配置只引用了我的新链式证书,所以我想知道旧证书是如何显示的。我甚至从目录中删除了它。
例如: https://www212.doostang.com/javascripts/base_packaged.js?1331831461(SSL没有证书问题) https://asset5.doostang.com/javascripts/base_packaged.js?1331831461(正在使用旧证书!)(映射到www212.doostang.com)
当我在asset5.doostang.com卷曲文件时,我收到证书错误:
卷曲:(60)SSL证书问题,验证CA证书是否正常。细节: 错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 更多详情:http://curl.haxx.se/docs/sslcerts.html
curl默认使用“捆绑”执行SSL证书验证 证书颁发机构(CA)公钥(CA证书)。如果是默认值 捆绑文件不够用,您可以指定备用文件 使用--cacert选项。 如果此HTTPS服务器使用由CA表示的CA签名的证书 捆绑,证书验证可能由于a而失败 证书问题(可能已过期,或名称可能已过期) 与URL中的域名不匹配)。 如果您想关闭curl对证书的验证,请使用 -k(或--insecure)选项。
当我添加-k选项时,我得到了请求的文件,我可以在我的nginx访问日志中看到它。当我不提供-k时,我没有得到nginx错误; nginx对证书错误没有提及。
10.99.110.27 - - [20 / Apr / 2012:18:02:52 -0700]“GET /javascripts/base_packaged.js?1331831461 HTTP / 1.0”200 5740“ - ” “curl / 7.21.3(x86_64-pc-linux-gnu)libcurl / 7.21.3 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18“
我把我认为是nginx配置的相关部分放在下面:
server {
# port to listen on. Can also be set to an IP:PORT
listen 443;
server_name www.doostang.com, *.doostang.com;
passenger_enabled on;
rails_env production;
ssl on;
ssl_certificate /.../doostang_combined.crt;
ssl_certificate_key /.../doostang.com.key;
ssl_protocols SSLv3;
# doc root
root /.../public/files;
if ($host = 'doostang.com' ) {
rewrite ^/(.*)$ https://www.doostang.com/$1 permanent;
}
}
# Catchall redirect
server {
# port to listen on. Can also be set to an IP:PORT
listen 443;
ssl on;
ssl_certificate /.../doostang_combined.crt;
ssl_certificate_key /.../doostang.com.key;
rewrite ^(.*)$ https://www.doostang.com$1;
}
答案 0 :(得分:1)