我们拥有带有自签名SSL证书的HTTPStesting服务器。 有没有任何反向代理,使我们能够访问HTTP页面,所以我们的程序可以发送HTTP请求,而不是一个HTTPS请求?
你可以用apache来做。
首先,您需要加载ssl,proxy,proxy_http和proxy_html模块。
那么,你需要一个像这样的代理设置:
<VirtualHost 0.0.0.0:80> ServerName give_it_a_name SSLProxyEngine on ProxyPass / https://your-test-server/ ProxyPassReverse / https://your-test-server/ ErrorLog /the/error.log </VirtualHost>
当然,你不需要一个VirtualHost,你可以将ProxyPass *和SSLProxy *指令embedded到其他主机定义中。
请注意,证书必须由受信任的权威机构签名。 如果您使用自签名证书,则必须使用
SSLProxyCACertificateFile /the/pem/file
或者
SSLProxyCACertificatePath /the/dir/where/the/cert/files/are
指令。
另外,Apache会检查远程主机的名称是否与颁发证书的名称相同。 您可以通过添加禁用此行为
SSLProxyCheckPeerCN off
行到您的configuration。 对于进一步的设置,你可能想检查Apache文档 。
如果您的testing服务器启用了HTTP,您可以简单地代理该协议(假设apache和mod_rewrite):
RewriteEngine On RewriteRule ^/foo(.*)$ http://testserver.example.org/$1 [P]
如果在未encryption的HTTP端口上没有任何内容正在监听,则不能仅将SSL取走。
RewriteEngine On RewriteRule ^/foo(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]