2017-03-23 2 views
1

내가 안전하게 통해 SSL 모든 방법을 지원하는 아파치와 프록시 설정을 확립하기 위해 노력하고있어 : 프록시 서버는 호스트 이름을 가지고구성 보안 SSL 아파치 프록시

Client <--> Proxy @ somehostname.com <--> Server @ 123.45.67.89 

참고하지만 원격 서버가하지 않습니다 . 클라이언트와 프록시 간의 SSL 설정은 letsencrypt 설정으로 문제없이 작동합니다. 그러나 프록시와 원격 서버 간의 연결을 보호하기 위해 고심하고 있습니다.

원격 서버에 호스트 이름이 없어서 encrypt가 IP에 대해서만 인증서를 발급하지 못하게하기 때문에 제 생각에는 자체 서명 된 인증서를 생성하고 인증서를 프록시에 복사하여 인증서를 신뢰하는 것입니다 하나. 불행히도 나는 어떻게해야할지 모르겠다. 프록시 그냥 모든 인증서 신뢰로 난 그냥이 인증서 확인, 연결 작업을하지 않으면

:

SSLProxyCheckPeerCN off 
SSLProxyCheckPeerName off 

하는 암호화가 잘 작동하지만를, 나의 이해의 신뢰성에 손상 나는 MITM 공격의 대상입니다 악수하는 동안. 이상적이지 않습니다.

대신, 나는

SSLProxyCACertificateFile /path/to/cert.pem 

내 자체 서명 인증서를 신뢰하는 아파치를 지시하고

SSLProxyVerify require 

에 유효한 인증서를 적용하는 시도했지만 나를에도 불구하고 인증서를 명시 적으로 나열했습니다 "원격 서버 인증에 사용됩니다"라는 문구가 SSLProxyCACertificateFile인데,이 서버는이를 신뢰하지 않는 것 같습니다.

예를 들어 Apache가 항상 해당 인증서를 사용하여 프록시에 연결하도록하여 프록시와 원격 서버 간의 연결이 안전한지 확인하는 방법이 있습니까?

답변

1

SSLProxyCACertificateFile을 통해 인증서를 추가해도 이름 확인이 건너 뛰지는 않습니다. 따라서 맞춤 인증서가 작동하려면 올바른 이름이나 내 경우 IP로 발행해야합니다. 해당 IP에 대해 새 인증서를 발행하면 구성이 작동합니다. 다음은 관련 부분입니다.

<VirtualHost *:443> 
    ServerName somehostname.com 
    SSLProxyEngine On 
    SSLProxyVerify require 
    SSLProxyCACertificateFile /path/to/custom_cert.pem 
    SSLProxyCheckPeerCN on # or omit, default is on 
    SSLProxyCheckPeerName on # same 
    ProxyPass/https://123.45.67.89/ 
    ProxyPassReverse/https://123.45.67.89/ 
</VirtualHost>