3

FastCGIワーカーのリバースプロキシとして機能するNginxを使用して、3つのフロントエンドRailsサーバーにVarnish負荷分散を行っています。昨日、証明書の有効期限が切れたため、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 すると、証明書エラーが発生します。

    curl: (60) SSL 証明書に問題があります。CA 証明書に問題がないことを確認してください。詳細: エラー: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 "-" "カール/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

バダムチン。標準化されていないロード バランサーでは、SSL ターミネーションのために実際に nginx を実行していました。私はこれに気付きませんでしたが、他のすべてを正しく行ったと思います。ポイントは、取得時に操作を引き継ぐときは、標準化して文書化することです。そこには本当に奇妙なエンジニアがいます:)

于 2012-04-23T03:18:41.403 に答える