ssl - Nginx - 使用自签名证书连接到上游时出现 SSL 握手错误
问题描述
我正在尝试代理使用自签名证书运行的旧服务器。
简单的 nginx 配置:
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 off;” 将忽略所有 SSL 错误,但似乎不会。
解决方案
ssl3_check_cert_and_algorithm:dh 密钥太小
问题是旧服务器提供的 DH 密钥被认为是不安全的(logjam攻击)。这与证书验证无关,因此尝试禁用证书验证将无济于事 - 无论如何都是一个坏主意。
相反,这个问题需要在服务器端解决,以提供更强的 DH 参数。或者,可以尝试通过使用proxy_ssl_ciphers参数来强制 nginx 首先不使用 DH 密码。那里可以选择哪些密码取决于旧服务器支持的内容,但您可以尝试类似HIGH:!DH
的参数,它允许 nginx 提供除 DH 密码之外的所有强密码。
推荐阅读
- javascript - v-for 循环中的 Vue.js ref
- android - RecyclerView 即使在接收到数据后也没有显示任何内容
- database - 使用授权防止用户访问 REST API 中的不相关数据
- java - 'javac' 无法识别。.
- ruby-on-rails - Rails 路由错误 5
- java - java.lang.ClassCastException:ItemAttachment 无法转换为 FileAttachment
- python - 如何从元组列表中产生组合
- eclipse - 仅显示 Eclipse CDT 中的编译错误
- bash - Bash获取键值错误
- java - 使用飞碟 PDF 渲染将格式错误的 HTML 转换为 PDF