在我的公司,我必须支持一个不支持 TLS 1.x 的相当旧的应用程序。该应用程序将请求发送到位于云中(在公司安全范围之外)的 Salesforce。为此,应用程序将请求发送到公司代理,然后将其发送到云。
现在的问题是 Salesforce 将停用 SSL3(此应用程序使用的),并要求此应用程序通过 TLS 1.1 连接到它。
我能想到解决这个问题的唯一方法是在此应用程序前面放置一个转发代理,更改请求标头以将其添加为基于 TLS,然后它将接受请求,将其转发给公司代理,然后发送到 Salesforce。
这是配置的 VirtualHost:
<VirtualHost _default_:12086>
# Put access log messages in a separate location
ErrorLog logs/FWDPROXY_UAT_SF_error_log
# Now configure the reverse proxy part
<IfModule mod_proxy.c>
# Enable forward proxy requests
ProxyRequests On
# Allows reverse proxying to https locations.
SSLProxyEngine On
RequestHeader set Front-End-Https "On"
ProxyPreserveHost On
# Allow requests from selected hosts or domains
<Proxy *>
Order Allow,Deny
Allow from all
</Proxy>
<Location />
Order allow,deny
Allow from all
</Location>
ProxyVia On
AllowCONNECT 80
# This is the main proxy configuration
ProxyPass / http://10.54.167.70:80/
ProxyPassReverse / http://10.54.167.70:80/
</IfModule>
</VirtualHost>
10.54.167.7 是公司代理。当测试这个时,我得到的错误是:
[Wed Feb 01 13:58:39 2017] [debug] mod_proxy_connect.c(122): proxy: CONNECT: connecting test.salesforce.com:443 to test.salesforce.com:443
[Wed Feb 01 13:58:39 2017] [error] [client 10.49.36.131] proxy: DNS lookup failure for: test.salesforce.com returned by test.salesforce.com:443
看来我的转发代理正在尝试解析 salesforce 主机名,而我只是希望它将其转发到公司代理。
有什么建议吗?谢谢。
答案1
- 更改应用程序中合作伙伴的交付 URL 并将其设置为 apache 服务器(例如http://your_apacheserver:8000/receive)
- apache服务器版本是2.4.25,修改httpd-ssl.conf如下