У нас есть тестовый HTTPS-сервер с самоподписанным SSL-сертификатом. Есть ли какой-либо обратный прокси-сервер, который позволит нам посещать страницу в 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 * в любое другое определение хоста.
Обратите внимание, что сертификат должен быть подписан доверенным центром. Если вы используете самозаверяющие сертификаты, вы должны предоставить их, используя
SSLProxyCACertificateFile /the/pem/file
или
SSLProxyCACertificatePath /the/dir/where/the/cert/files/are
директивы.
Кроме того, Apache проверяет, совпадает ли имя удаленного хоста с тем, которому выдан сертификат. Вы можете отключить это поведение, добавив
SSLProxyCheckPeerCN off
строку в ваш config. Для дальнейших настроек вы можете проверить Документы Apache.
RewriteEngine On
RewriteRule ^/foo(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]
Если на вашем тестовом сервере включен HTTP, вы можете просто прокси для этого протокола (при условии, что apache и mod_rewrite):
RewriteEngine On
RewriteRule ^/foo(.*)$ http://testserver.example.org/$1 [P]
Если через незашифрованный HTTP-порт ничего не слушает, вы не можете просто отключить SSL.