3

我有 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)

  • 我已经重新加载甚至停止并重新启动了 nginx,测试了 nginx 以确保它从正确的配置中读取,并使用新的缓存文件重新启动了清漆。
  • 当我在asset5.doostang.com 卷曲文件时,出现证书错误:

    curl: (60) SSL证书问题,验证CA证书是否OK。详细信息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败更多详细信息:http ://curl.haxx.se/docs/sslcerts.html

    curl 默认使用证书颁发机构 (CA) 公钥(CA 证书)的“捆绑”执行 SSL 证书验证。如果默认捆绑文件不够用,您可以使用 --cacert 选项指定备用文件。如果此 HTTPS 服务器使用捆绑包中表示的 CA 签名的证书,则证书验证可能由于证书问题而失败(证书可能已过期,或者名称可能与 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;
} 
4

1 回答 1

2

巴东卿。我的非标准化负载均衡器实际上运行了 nginx 来终止 SSL。我没有注意到这一点,但我认为我做的一切都是正确的。重点是,当您在收购后接管运营时,请标准化和记录!那里有一些非常奇怪的工程师:)

于 2012-04-23T03:18:41.403 回答