私は、Tomcat Web サービス (アクセスできない) をリバース プロキシするために Nginx サーバーをセットアップしようとしています。これは基本的に、Tomcat サーバーが TLSv1.0 を実行しているため、バージョンを上げようとしているためです。
しかし、プロキシにアクセスしようとすると 502 エラーが発生します。Ngnix ログには - と表示されますSSL_do_handshake() failed (SSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstream
。
これが私のNginxの設定です -
ssl_certificate /etc/nginx/certs/public.pem;
ssl_certificate_key /etc/nginx/certs/private.key;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
server {
listen 6003;
server_name example.com;
ssl on;
location / {
proxy_pass https://example.com:6003;
}
}
Apache でも同じことを試してみましたが、まったく同じエラーが表示されます。何かアイデアをお持ちの方はいらっしゃいますか?
答え1
これは、アップストリーム SSL を使用したリバース プロキシとしての nginx. 別途SSL設定上流プロキシの許容プロトコルを設定する
...
server {
listen 6003;
server_name example.com;
ssl on;
ssl_certificate /etc/nginx/certs/example.pem;
ssl_certificate_key /etc/nginx/certs/private.key;
... other settings
location / {
proxy_pass https://example.com:6003;
proxy_ssl_trusted_certificate /etc/nginx/certs/example.pem;
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
}
リストされている 3 つの値はproxy_ssl_protocols
現在のデフォルト セットですが、将来のリリースで TLSv1 と TLSv1.1 を削除するように変更される可能性があります。