配置安全SSL Apache代理

时间:2017-03-23 16:45:20

标签: apache ssl https proxy

我正在尝试使用apache建立代理设置,从而一直安全地支持SSL:

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始终使用该特定证书连接到代理?

1 个答案:

答案 0 :(得分:4)

通过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>