我正在尝试代理使用自签名证书运行的旧服务器。
简单的nginx conf:
server {
listen 8009;
location / {
proxy_ssl_verify off;
proxy_ssl_session_reuse off;
proxy_pass https://192.168.10.20:8009/;
}
}
我在nginx日志中收到SSL握手错误。
2018/05/02 11:31:39 [crit] 3500#2284: *1 SSL_do_handshake() failed (SSL: error:14082174:SSL routines:ssl3_check_cert_and_algorithm:dh key too small) while SSL handshaking to upstream, client: 127.0.0.1, server: , request: "GET /ping HTTP/1.1", upstream: "https://192.168.10.20:8009/ping", host: "localhost:8009"
我希望关闭" proxy_ssl_verify;"将忽略所有SSL错误,但似乎没有。
答案 0 :(得分:2)
ssl3_check_cert_and_algorithm:dh键太小
问题是旧服务器提供的DH密钥被认为是不安全的(logjam攻击)。这与证书验证无关,因此尝试禁用证书验证无济于事 - 无论如何都是一个坏主意。
相反,需要在服务器端修复此问题以提供更强的DH参数。或者,可以尝试使用proxy_ssl_ciphers参数强制nginx首先不使用DH密码。可以选择哪些密码取决于旧服务器支持的内容,但您可以尝试使用HIGH:!DH
之类的参数作为参数,允许nginx提供除DH密码之外的所有强密码。