2014-04-30 4 views
2

요청을 사용하여 원격 사이트에서 사용하는 SSL 인증서에 대한 정보를 얻을 수있는 방법을 찾고 있습니다 (CA와 CN으로 충분합니다).Python 요청 라이브러리 - SSL 인증서 정보 얻기

예를 들어 socket + OpenSSL을 사용할 때 쉽게 얻을 수 있지만 특수 코드 (예 : Python 'requests' library - define specific DNS?)를 사용하여 요청 또는 urllib2를 사용해야합니다 .- 지금까지 대부분의 요청 코드를 검토했습니다. 모듈을 검사하면이 값들을 얻을 수있는 방법이 없습니다. 내가 요청 lib 디렉토리의 일부를 패치하고있어 (-

더 정확하게하려면

나는 어쩌면 내가 뭔가를 분명 :)

[편집] 누락,이 시점에서 어떤 힌트를 주시면 감사하겠습니다

self.my_opener = urllib2.build_opener (MyHTTPHandler, MyHTTPSHandler) (urllib2.OpenerDirector 인스턴스)

my_opener : urllib2가 최대 '소켓')에서, 사용자 정의 이름이이 내려 온다 resolver- 사용할 수 있습니다. open (url)은 urllib.addinfourl 객체를 반환합니다. 인증서 정보를 추출해야합니다.

불행히도이 질문은 이후로이 질문이 중복으로 표시되었습니다. 이 인증서의 유효성 확인에 관해서

+0

[요청에서 응답 SSL 인증서를 얻는 방법은 무엇입니까?] (http://stackoverflow.com/questions/16903528/how-to-get-response-ssl-certificate-from-requests-in-python) –

+0

파이썬 버전은 무엇입니까? –

답변

0

발견.

예 :

f=my_opener.open(url) 
f.fp._sock.fp._sock._sslobj # here's the ssl object holding the 'issuer' (CA) and 'server' (CN) attributes. 

이 질문에서 패치를 사용할 때이 유효합니다 Python 'requests' library - define specific DNS?

나는 다른 사람이 이를 사용할 필요가 없습니다 희망이 사건은, 그래서 특유의 . 그러나 요청을 사용하여 사용자 정의 이름 확인자간에 전환하고 SSL 인증서 CA/CN을 확인해야하는 경우 다음이 도움이 되었기를 바랍니다.

1
+0

인증서는 요청 표준에 의해 항상 무효화됩니다 (자체 서명 됨, 즉석에서 생성됨). CA/CN이 인증서에서 다른 메소드가 수신 측에서 올바르게 변경되었는지 확인하기 만하면됩니다. 그게 전부입니다. – Taku

+0

원숭이가'ssl_match_hostname' 버전을 사용하도록 요청합니다. btw., 2 단계의 인증서 유효성 검사가 있습니다. 제쳐두고, 인증서 확인의 2 단계가 있습니다 - 1 서버가 보내는 인증서 ('verify = True' 키워드, 실제로는 C 레벨, ssl 확장자 및 openssl에서 발생)에 대한 개인 키를 소유하고 있는지 확인하고이 url/hostname 이 인증서 (ssl_match_hostname)에 허용됩니다. 후자를 조정할 필요가 있습니다. –