우리 회사에서는 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를 다음과 같이 수정합니다.