HerokuへのNginxリバースプロキシがSSLハンドシェイクに失敗する

バート :

残念ながら私はあまりシステム管理者ではないので、頭を壁にぶつけてしまう問題に遭遇しました。

短い話は、EC2(Ubuntu 14.04.4 LTS)でNginxを実行して、(a)自社のマーケティングサイト(https://example.com、偶然Wordpressです)をホストし、(b)リバースとして機能することです。特定のパスについて、Heroku(https:// app.example.com)で実行されているRailsアプリへのプロキシ。example.comとapp.example.comの両方に同じSSL証明書を使用します。これらはすべて8〜10か月間有効に機能しましたが、最近Herokuの有料SSLアドオンから新しい無料のSSLサービスに切り替え、リバースプロキシが機能しなくなりました。

Nginxエラーログを確認すると、次のように表示されます。

SSL_do_handshake()が失敗しました(SSL:エラー:14094438:SSLルーチン:SSL3_READ_BYTES:tlsv1アラートの内部エラー:SSLアラート番号80)アップストリームへのSSLハンドシェイク、クライアント:ipaddress1、サーバー:example.com、リクエスト: "GET / proxiedpath / proxiedpage HTTP / 1.1」、アップストリーム:「https:// ipaddress2:443 / proxiedpath / proxiedpage」、ホスト:「example.com」

私はいくつかの追加のガイダンスを探して探しました-運が悪いのにNginx(1.10.1)とOpenSSL(1.0.2h)をアップグレードしました。この問題の原因はHerokuの新しい無料SSL機能(https://devcenter.heroku.com/articles/ssl-betaでのSNIの使用にあると思われますが、これが問題である理由を特定できませんでした。

このポイントへの私の探査のいくつかの追加ポイント:

  • 新しい無料のHeroku SSLに切り替えたとき、ドキュメントの指示に従って、app.example.com DNSレコードをapp.example.com.herokudns.comを指すように変更しました。アプリケーションには通常app.example.comからアクセスできます。app.example.comとapp.example.com.herokudns.comでnslookupを実行すると、同じIPアドレスが返されます。しかしながら...

  • nslookupから返されたIPアドレスまたはapp.example.com.herokudns.comからアプリケーションにアクセスできません。これは正常で予想されることだと思いますが、これがなぜなのかを正確に説明するのに十分な知識はありません。そして...

  • nslookupから返されたIPアドレスは、上記のログのエラーメッセージで参照されているIPアドレス( "ipaddress2")とは異なります。実際、「ipaddress2」はログ全体で一貫していません-定期的に変更されているようです。繰り返しになりますが、私にはわからないことがよくわかりません... Heroku側での負荷分散ですか?

そして最後に、私のNginxリバースプロキシはnginx.confで次のように構成されています。

http {

    client_max_body_size 500M;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    server_names_hash_bucket_size 64;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;
    gzip_disable "msie6";

    server {

        listen 443 default_server;
        server_name example.com;

        root /usr/share/nginx/html;
        index index.php index.html index.htm;

        ssl on;
        ssl_certificate mycompanycert.crt;
        ssl_certificate_key mycompanykey.key;

        ssl_session_timeout 5m;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
        ssl_prefer_server_ciphers on;

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;

        location / {
            try_files $uri $uri/ /index.php?q=$uri&$args;
        }

        location ^~ /proxiedpath/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Proto https;
            proxy_pass https://app.example.com/proxiedpath/;
        }

    }

}

どんな助けでも大歓迎です-どうもありがとうございます!

バート :

私はこれを今日解決することができ、他の人が同じ問題に遭遇した場合の解決策を投稿したいと思いました。

結局のところ、問題はSNIに関連していることがわかりました。私はnginx.orgでこのチケットを見つけました:

https://trac.nginx.org/nginx/ticket/229

これにより、proxy_ssl_server_nameディレクティブが表示されます。

http://nginx.org/r/proxy_ssl_server_name

設定で「オン」に設定すると、SNIを使用してアップストリームホストにプロキシできます。

提案でコメントしたすべての人に感謝します!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

NGINXキャッシングプロキシがSSL23_GET_SERVER_HELLO:sslv3アラートハンドシェイクの失敗で失敗する

分類Dev

FacebookへのPhantomjs接続がSSLハンドシェイクに失敗する

分類Dev

SSLハンドシェイクがAndroidクライアントからGoogleへの接続に失敗する

分類Dev

レトロフィット:AndroidアプリはAPI21 +デバイスで起動するとSSLハンドシェイクに失敗します

分類Dev

AzureWebアプリがWordpressサイトへのリバースプロキシに失敗する

分類Dev

Nginx、Https、リバースプロキシ、ハンドシェイクエラー。'nginx / sites-enabled / default'ファイルのレビューが必要です。

分類Dev

「sslv3アラートハンドシェイクの失敗:SSLアラート番号40」でSSLハンドシェイクが失敗する

分類Dev

「sslv3アラートハンドシェイクの失敗:SSLアラート番号40」でSSLハンドシェイクが失敗する

分類Dev

WebSocketハンドシェイクが404に失敗する(golangサーバー)

分類Dev

XamarinでSSLハンドシェイクが失敗する

分類Dev

Docker上のASP.NET5Webアプリケーションへのnginxリバースプロキシのリクエストがハングする

分類Dev

リンクされたDockerコンテナでNGINXリバースプロキシが失敗する

分類Dev

サーバハロー前にハンドシェイクの失敗

分類Dev

Scrapyのプロキシを使用したSSLハンドシェイクの失敗

分類Dev

OkHttp SSLHandshakeException SSLハンドシェイクが中止されましたSSLライブラリでの失敗、プロトコルエラー

分類Dev

nginx SSLハンドシェイクは、「SSL_BYTES_TO_CIPHER_LIST:inappropriatefallback」を使用してモバイルデバイスからの要求で失敗します

分類Dev

Owncloudのダウンロードがリバースプロキシの背後で失敗する

分類Dev

「SSLハンドシェイクの完了に失敗しました:NSSエラー-5938。」リトレースサーバーとの接続中

分類Dev

SSLメッセージを送信する前にSSLハンドシェイクが失敗するのはなぜですか?

分類Dev

TomcatのWebアプリケーションから外部アプリケーションへのSSL(双方向ハンドシェイク)を有効にする

分類Dev

SSL致命的エラー-ハンドシェイクの失敗(40)

分類Dev

i3wm:キーにバインドするとスクリーンショットスクリプトが失敗する

分類Dev

httpsへのHTTPリクエストの実行中にエラーが発生しました->ハンドシェイクが失敗しました

分類Dev

AWSラムダからs3バケットへのスクリーンショットのアップロードが失敗する

分類Dev

Linux.netコア上のIBM.MQMQQueueManager中にセキュアハンドシェイクが失敗する

分類Dev

Nginx-自己署名証明書を使用してアップストリームに接続する際のSSLハンドシェイクエラー

分類Dev

Bitbucketパイプラインがherokuへのプッシュに失敗する

分類Dev

Outlook RESTAPIリッチ通知へのサブスクリプションプロトコルが安全なSSLチャネルの作成に失敗する

分類Dev

ワークステーションがドッキングされていないときにナイフ SSL チェックが失敗する

Related 関連記事

  1. 1

    NGINXキャッシングプロキシがSSL23_GET_SERVER_HELLO:sslv3アラートハンドシェイクの失敗で失敗する

  2. 2

    FacebookへのPhantomjs接続がSSLハンドシェイクに失敗する

  3. 3

    SSLハンドシェイクがAndroidクライアントからGoogleへの接続に失敗する

  4. 4

    レトロフィット:AndroidアプリはAPI21 +デバイスで起動するとSSLハンドシェイクに失敗します

  5. 5

    AzureWebアプリがWordpressサイトへのリバースプロキシに失敗する

  6. 6

    Nginx、Https、リバースプロキシ、ハンドシェイクエラー。'nginx / sites-enabled / default'ファイルのレビューが必要です。

  7. 7

    「sslv3アラートハンドシェイクの失敗:SSLアラート番号40」でSSLハンドシェイクが失敗する

  8. 8

    「sslv3アラートハンドシェイクの失敗:SSLアラート番号40」でSSLハンドシェイクが失敗する

  9. 9

    WebSocketハンドシェイクが404に失敗する(golangサーバー)

  10. 10

    XamarinでSSLハンドシェイクが失敗する

  11. 11

    Docker上のASP.NET5Webアプリケーションへのnginxリバースプロキシのリクエストがハングする

  12. 12

    リンクされたDockerコンテナでNGINXリバースプロキシが失敗する

  13. 13

    サーバハロー前にハンドシェイクの失敗

  14. 14

    Scrapyのプロキシを使用したSSLハンドシェイクの失敗

  15. 15

    OkHttp SSLHandshakeException SSLハンドシェイクが中止されましたSSLライブラリでの失敗、プロトコルエラー

  16. 16

    nginx SSLハンドシェイクは、「SSL_BYTES_TO_CIPHER_LIST:inappropriatefallback」を使用してモバイルデバイスからの要求で失敗します

  17. 17

    Owncloudのダウンロードがリバースプロキシの背後で失敗する

  18. 18

    「SSLハンドシェイクの完了に失敗しました:NSSエラー-5938。」リトレースサーバーとの接続中

  19. 19

    SSLメッセージを送信する前にSSLハンドシェイクが失敗するのはなぜですか?

  20. 20

    TomcatのWebアプリケーションから外部アプリケーションへのSSL(双方向ハンドシェイク)を有効にする

  21. 21

    SSL致命的エラー-ハンドシェイクの失敗(40)

  22. 22

    i3wm:キーにバインドするとスクリーンショットスクリプトが失敗する

  23. 23

    httpsへのHTTPリクエストの実行中にエラーが発生しました->ハンドシェイクが失敗しました

  24. 24

    AWSラムダからs3バケットへのスクリーンショットのアップロードが失敗する

  25. 25

    Linux.netコア上のIBM.MQMQQueueManager中にセキュアハンドシェイクが失敗する

  26. 26

    Nginx-自己署名証明書を使用してアップストリームに接続する際のSSLハンドシェイクエラー

  27. 27

    Bitbucketパイプラインがherokuへのプッシュに失敗する

  28. 28

    Outlook RESTAPIリッチ通知へのサブスクリプションプロトコルが安全なSSLチャネルの作成に失敗する

  29. 29

    ワークステーションがドッキングされていないときにナイフ SSL チェックが失敗する

ホットタグ

アーカイブ