Apache httpd 反向代理方案的 SSL 问题

Posted

技术标签:

【中文标题】Apache httpd 反向代理方案的 SSL 问题【英文标题】:SSL issue with Apache httpd reverse proxy scheme 【发布时间】:2017-08-03 19:53:20 【问题描述】:

抱歉,这个问题是 Chef 和 A​​pache-httpd 的混合问题,但最终我相信这是一个 Apache-httpd 配置问题。 我有一个 Chef 客户端/节点,很高兴使用 SSL 访问 Chef 服务器。

Chef 客户端/节点 - /etc/chef/client.rb

chef_server_url  'https://chefserverhostname/organizations/myOrg'
ssl_verify_mode  :verify_peer

我正在尝试在 Chef 服务器前面放置一个代理,以便我可以在需要时重新指向该路径。 Apache-httpd 安装良好(与 Chef Server 在同一个盒子上),所有防火墙和 iptables 都与我的以下配置一致。

主厨服务器 - /etc/httpd/conf/httpd.conf

Listen 8443
<VirtualHost *:8443>
 ServerAdmin me@email
 ServerName  chefserverhostname
 ServerAlias CDS-PROXY
 ProxyPass / https://chefserverhostname:443/
 ProxyPassReverse / https://chefserverhostname:443/
 RewriteEngine On
</VirtualHost>

我将 Chef 客户端/节点的 client.rb 重新配置为指向 https://chefserverhostname:8443/organizations/myOrg,并希望让请求通过代理。 ChefServer/nginx 正在监听 443,我假设它正在处理 SSL 解密,而 8443 只是“传递”。但是当我启动我的 Chef 客户端/节点时,我收到一条 SSL 错误消息:

ERROR: SSL Validation failure connecting to host: chefserverhostname - SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol

【问题讨论】:

【参考方案1】:

您可以查看https://github.com/chef-cookbooks/httpd 这个配方并正确配置 apache ssl 和其他模块。

对我来说,在 Chef 服务器上断开 SSL 连接也不行 - 根据您当前的设置。

由于您的机器上有 nginx,您可以在那里扩展配置以支持反向代理。稍后,如果您从这台机器上删除 chefserver/nginx 并且只想离开代理,请安装新的 nginx 并为代理配置应用相同的 conf。

我宁愿从你的设置中删除 apache。

【讨论】:

【参考方案2】:

您正在使用 HTTPS,但您的虚拟主机没有任何配置来启用 mod_ssl 或其他 TLS 选项。因此,您应该使用http://hostname:8443,但非常不推荐。

Chef Server 本质上是一个设备,这种额外的代理层是可能的,但不是事情的预期运作方式。您应该只使用默认设置,该设置已经包含 Erchef 和朋友的前端 nginx 代理。

【讨论】:

以上是关于Apache httpd 反向代理方案的 SSL 问题的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SSL 从 Tomcat 迁移到 Apache HTTPD?

如何开启apache虚拟目录反向代理

windows下配置apache+https

使用和不使用 SSL 的 Apache 反向代理之间行为不同的原因

宝塔面板配置 vue生产环境和开发环境 反向代理---Nginx+Apache解决方案

Apache反向代理配置