我正在尝试使用apache Build 代理设置,从而一直安全地支持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的文档说"These are used for Remote Server Authentication",但它似乎并不信任它 .
有没有办法确保代理和远程服务器之间的连接是安全的,例如通过强制Apache始终使用该特定证书连接到代理?
1 回答
原来通过
SSLProxyCACertificateFile
添加证书不会跳过名称检查,这是完全合理的 . 因此,为了使自定义证书有效,它们仍然需要发出正确的名称,或者在我的情况下,IP . 在我向该IP发出新证书后,我的配置现在正常工作 . 以下是相关部分: