2016-10-16 6 views
0

파이썬 소켓을 사용하여 ssl을 통한 요청 만 허용하는 도메인 등록 기관에 EPP (Extensible Provisioning Protocol) 요청을하려고합니다.Python 소켓 SSL : 인증서 확인에 실패했습니다.

인증서 파일 : www.myDomain.se.crt 키 파일 : 나는 성공적으로 등록에서 응답 인사를 얻을 수 있지만,

openssl s_client -connect epptestv3.iis.se:700 -cert www.myDomain.se.crt -key mydomain.pem 

난하려면 openssl 클라이언트를 사용하여 요청을 시도 mydomain.pem 나는 다음과 같은 코드를 사용할 때 파이썬에서 SSL 인증서 오류가 발생합니다. 여기 뭐가 잘못

Traceback (most recent call last): 
    File "server_connect.py", line 54, in <module> 
    ca_certs=ssl_keyfile 
    File "/usr/lib/python2.7/ssl.py", line 933, in wrap_socket 
    ciphers=ciphers) 
    File "/usr/lib/python2.7/ssl.py", line 601, in __init__ 
    self.do_handshake() 
    File "/usr/lib/python2.7/ssl.py", line 830, in do_handshake 
    self._sslobj.do_handshake() 
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 

어떤 생각 :

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.settimeout(15) 
sock.connect(('epptestv3.iis.se', 700)) 
sock.settimeout(60) # regular timeout 


ssl_keyfile='myDomain.pem' 
ssl_certfile='www.myDomain.se.crt' 
ssl_ciphers='AES256-GCM-SHA384' 
ssl_version=ssl.PROTOCOL_TLSv1_2 

sock = ssl.wrap_socket(sock, 
         ssl_keyfile, 
         ssl_certfile, 
         ssl_version=ssl_version, 
         ciphers=ssl_ciphers, 
         server_side=False, 
         cert_reqs=ssl.CERT_REQUIRED, 
         ca_certs=None 
         ) 

스크립트를 실행 한 후에 나는 오류 다음 얻을? documentation of wrap_socket에서

    cert_reqs=ssl.CERT_REQUIRED, 
        ca_certs=None 

: 사용자 코드에서

답변

2

If the value of this parameter is not CERT_NONE, then the ca_certs parameter must point to a file of CA certificates.

은 기본적으로 당신은 서버 (CERT_REQUIRED)에서 인증서의 유효성을 검사하지만 동시에 지정 코드에서 요구되는 신뢰할 수있는 루트가 없습니다 (ca_certs=None). 그러나 신뢰할 수있는 루트 인증서가 없으면 유효성 검사를 수행 할 수 없습니다.

대신 CERT_NONE을 사용하도록 코드를 변경하는 것은 좋지 않을 수 있습니다. 인증서 유효성 검사가 수행되지 않기 때문에 아마 작동하지만 중간 공격에서는 사람에게 공개됩니다.

+0

실제로 나는'ca_certs '를 제공함으로써 시도했지만 도움이되지 않습니다. –

+0

@OsamaRasheed : 파일의 내용이 당신이'ca_certs'로 지정한 것에 많이 의존합니다. 귀하의 경우에는 파일에 [이 인증서] (https://www.tbs-certificates.co.uk/FAQ/en/357.html)가 필요할 수 있습니다. –