2017-03-23 59 views
1

我试图建立与Apache的代理设置,能够安全地支持SSL一路过关斩将:我的代理服务器有一个主机名配置SSL安全Apache代理

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

注意,但远程服务器不。客户端和代理之间的SSL设置可以使用letsencrypt设置正常工作。但是,我很努力确保代理和远程服务器之间的连接。

由于远程服务器没有主机名,并且letsencrypt不仅仅为IP颁发证书,我的想法是生成自签名证书并将证书复制到代理中,以便仅相信该证书一。不幸的是我不知道如何。

如果我只是禁用这些证书检查,连接的作品,作为代理只是相信每个证书:

SSLProxyCheckPeerCN off 
SSLProxyCheckPeerName off 

虽然加密将正常工作,我的理解真实性受到损害,我受到MITM攻击在握手期间。这并不理想。

相反,我已经指示阿帕奇与

SSLProxyCACertificateFile /path/to/cert.pem 

信任我的自签名的证书,然后试图强制执行与

SSLProxyVerify require 

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

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

回答

1

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