我尝试使用 haproxy 设置 SSL 终端作为测试平台。它在 80 端口上很好地提供了测试页面,但在 443 端口上,chrome 显示警告,提示 ssl 连接不安全,并且带有 https 的图标被删除。
我使用以下命令创建了证书:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout web.key -out web.crt
cat web.crt web.key > web.pem
和通用名称定义为haproxy.com
我也把它haproxy.com
放到我的/etc/hosts
档案里
以下是 haproxy 的摘录:
frontend main
bind *:80
bind *:443 ssl crt /root/web.pem
mode http
default_backend app
backend app
balance roundrobin
server app1 127.0.0.1:8080 check
server app2 127.0.0.1:8081 check
我该如何处理这个警告?
答案1
自签名证书不受任何浏览器信任,因为您是证书的签名者,而不是证书颁发机构。您可以在浏览器的信任存储中导入根证书,但这只会使您的连接成为受信任的连接,而其他人将收到相同的警告消息。
答案2
即使官方 CA 签名证书在我向前端添加 X-Forwarded-Proto 设置之前,我收到了来自 Chrome 的不安全连接警告。简化示例,其中 haproxy 用作本地主机 SSL 前端,在 Tomcat 后端上侦听(无 SSL)端口 8080:
frontend web_plainhttp
bind *:80
redirect prefix https://www.example.com code 301
frontend web_https
bind *:443 ssl crt www.example.com_SSLcert.pem
http-request set-header X-Forwarded-Proto https
option forwardfor
default_backend w_website
backend w_website
server w_server 127.0.0.1:8080
只需删除“http-request set-header X-Forwarded-Proto https”这一行,Chrome 就会显示连接不安全……事实上,http 响应受到后端服务器的影响,后端服务器根据传入的协议在标头/内容中返回 http 或 https