2010-02-24 4 views

답변

5

당신은 그렇게 M2Crypto의 모든 피어 인증서 검사를 해제 할 수 있습니다

from M2Crypto import SSL, httpslib 

context = SSL.Context("sslv3") 

# Disable certificate checking 
context.set_verify(0, depth = 0) 

connection = httpslib.HTTPSConnection("somehostname", 443, ssl_context=context) 

# Hack (!!!) for disabling host name check <CN> == <expected host name>. 
# Will affect any future SSL connections made by M2Crypto! 
SSL.Connection.postConnectionCheck = None 

connection.connect() # <-- this would normally raise SSL verification errors 
connection.request("GET", "/") 

... 

난 당신이 알고 희망 M2Crypto로 만든 SSL 연결이 것 본질적으로 해제 보안을 제공합니다. 따라서 한 서버와 만 통신하고 중간자 위험이 암호화되지 않은 HTTP를 사용하는 것보다 더 적합하다고 생각하는 경우를 제외하고는 권장할만한 것이 아닙니다.

지금까지 M2Crypto 솔루션,하지만 귀하의 질문에 (제목 반대) (아직 사용하지 않은) SOAPpy에 대해 묻는 SOAPpy config 대신 socket 모듈을 사용하는 것 때문에,이 솔루션은 다를 수 있습니다로 M2Crypto.SSL (132 행 참조) socket.ssl 모듈이 호스트 이름을 확인하지 못하게하는 방법을 모르겠습니다.

sslsock = M2Crypto.SSL.Connection(sslcontext) 
# Disable checking of server certificates 
sslsock.set_post_connection_check_callback(None) 

을 : AndiDog의 대답에 확장

0

, 당신이 인스턴스에 의해 인스턴스 기준 및 버전 0.21.1 (적어도) M2Crypto의에 postConnectionCheck을 설정할 수 있습니다, 그렇게 할 수있는 Connect.set_post_connection_check_callback() 방법이있다 서버에 연결된 클라이언트와 허용 된 클라이언트를 모두 검사 할 수 없도록 설정합니다 (기본적으로 비활성화 됨).

파라미터 아니라면 없음, 인증서 주소를 취하는 함수, 즉 : 참고로

check(self.get_peer_cert(), self.addr[0]) 

상기 M2Crypto source를 참조한다.

관련 문제