apache - 配置安全的 SSL Apache 反向代理

标签 apache ssl https proxy

我正在尝试使用始终安全支持 SSL 的 apache 建立反向代理设置:

Client   <-->   Proxy @ somehostname.com   <-->   Server @ 123.45.67.89

请注意,我的代理服务器有一个主机名,但远程服务器没有。客户端和代理之间的 SSL 设置与 letsencrypt 设置一起工作。但是,我正在努力保护代理和远程服务器之间的连接。

因为远程服务器没有主机名,而且 letsencrypt 不只为 IP 颁发证书,我的想法是生成一个自签名证书并将证书复制到代理,让它只信任那个.不幸的是,我不知道该怎么做。

如果我只是禁用这些证书检查,连接就可以正常工作,因为代理只信任每个证书:

SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

虽然加密可以正常工作,但据我所知,真实性会受到损害,而且我在握手期间会受到 MitM 攻击。这并不理想。

相反,我已经指示 Apache 信任我的自签名证书

SSLProxyCACertificateFile /path/to/cert.pem

然后尝试使用

强制执行有效证书
SSLProxyVerify require

但尽管我明确列出了证书和 SSLProxyCACertificateFile 的文档说“这些用于远程服务器身份验证”,似乎不信任它。

有没有办法确保代理和远程服务器之间的连接是安全的,例如强制 Apache 始终使用该特定证书连接到代理?

最佳答案

事实证明,通过 SSLProxyCACertificateFile 添加证书不会跳过名称检查,这完全有道理。因此,为了使自定义证书起作用,它们仍然需要颁发给正确的名称,或者在我的例子中,IP。在我为该 IP 颁发新证书后,我的配置现在可以使用了。以下是相关部分:

<VirtualHost *:443>
    ServerName somehostname.com
    SSLProxyEngine On
    SSLProxyVerify require
    SSLProxyCACertificateFile /path/to/custom_cert.pem
    SSLProxyCheckPeerCN on  # or omit, default is on
    SSLProxyCheckPeerName on  # same
    ProxyPass / https://123.45.67.89/
    ProxyPassReverse / https://123.45.67.89/
</VirtualHost>

关于apache - 配置安全的 SSL Apache 反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42982154/

相关文章:

apache - 在 apache 上的 modsecurity 中通过 ID 禁用规则

amazon-web-services - AWS Bitnami 在 Ec2 上启用 https

ssl - 使用 erlang 发送 apns

reactjs - Heroku 中的 Http 到 Https 重定向或如何安装 react-https-redirect?

ssl - 如何创建受信任的自签名 SSL 证书

apache - 当 Apache 将 HttpS 请求重定向到 http 时,Chrome 抛出 ERR_CONNECTION_REFUSED

php - 某些 REQUEST_URI 上的 mod_rewrite

https - HTTP/2 通信中 HttpClient-5.2.1 的内存消耗和 GC 性能问题

apache - Tomcat/Apache/Grails 配置

python - 如何在 python 中序列化 httplib SSL 连接对象?