PKCS # 12 인증서를 사용하여 클라이언트 유효성 검사에 httplib의 HTTPSConnection을 사용하려고합니다. 나는 인증서가 MSIE와 Firefox에서 그것을 사용하는 서버에 연결할 수 있기 때문에 인증서가 좋다는 것을 안다.PKCS # 12 인증서로 httlib의 HTTPSConnection을 사용하는 중 오류가 발생했습니다.
내 연결 기능은 인증서에 개인 키가 포함되어 있습니다. 난 그냥 기본에 내려 껍질을 벗겼다했습니다
이def connect(self, cert_file, host, usrname, passwd):
self.cert_file = cert_file
self.host = host
self.conn = httplib.HTTPSConnection(host=self.host, port=self.port, key_file=cert_file, cert_file=cert_file)
self.conn.putrequest('GET', 'pathnet/,DanaInfo=200.222.1.1+')
self.conn.endheaders()
retCreateCon = self.conn.getresponse()
if is_verbose:
print "Create HTTPS connection, " + retCreateCon.read()
(참고 : 하드 코딩 된 경로에 대한 코멘트, 제발 -이 먼저 일을하려고 노력하지거야, 나는 꽤 나중에 그것을 만들 수 있습니다 . 하드 코딩 된 경로는 MSIE 및 Firefox에서 연결될 때 정확합니다. 게시물의 IP 주소를 변경했습니다.
PKCS # 12 인증서 (.pfx 파일), 나는 openSSL 오류로 보이는 것을 다시 얻는다. 여기에 전체 오류 추적은 다음과 같습니다
File "Usinghttplib_Test.py", line 175, in t.connect(cert_file=opts["-keys"], host=host_name, usrname=opts["-username"], passwd=opts["-password"]) File "Usinghttplib_Test.py", line 40, in connect self.conn.endheaders() File "c:\python26\lib\httplib.py", line 904, in endheaders self._send_output() File "c:\python26\lib\httplib.py", line 776, in _send_output self.send(msg) File "c:\python26\lib\httplib.py", line 735, in send self.connect() File "c:\python26\lib\httplib.py", line 1112, in connect self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file) File "c:\python26\lib\ssl.py", line 350, in wrap_socket suppress_ragged_eofs=suppress_ragged_eofs) File "c:\python26\lib\ssl.py", line 113, in __init__ cert_reqs, ssl_version, ca_certs) ssl.SSLError: [Errno 336265225] _ssl.c:337: error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib
공지 사항,에는 OpenSSL 오류 (목록의 마지막 항목) 나는 PEM 인증서를 사용하려고하고 있지 않다 때문에 나는 이상한 발견 "PEM lib 디렉토리"를 말한다.
킥의 경우 PKCS # 12 인증서를 PEM 인증서로 변환하고 을 사용하여 동일한 코드를 실행했습니다. 이 경우 오류가 발생하지 않고 PEM 암호 구문을 입력하라는 메시지가 나타나고 코드가 서버에 도달하려고 시도했습니다. (나는 "이 서비스는 을 사용할 수 없습니다. 나중에 다시 시도하십시오.",하지만 서버가 PEM 인증서를 수락하지 않았기 때문에 그럴 것이라고 생각합니다 .PEM cert를 사용하여 Firefox에서 서버에 연결할 수 없습니다.)
httplib의 HTTPSConnection이 PCKS # 12 인증서를 지원해야합니까? (즉, pfx 파일입니다.) 그렇다면 openSSL이 PEM 라이브러리 안에로드하려고하는 것처럼 보이는 이유는 무엇입니까? 이 모든 일을 잘못하고 있니?
어떤 조언을 환영합니다.
EDIT : 인증서 파일에는 인증서와 개인 키가 모두 포함되어 있습니다. 따라서 HTTPSConnection의 key_file 및 cert_file 매개 변수에 동일한 파일 이름을 제공하고 있습니다.
+1 RTFM의 경우. 작년에 내가이 일을하고있을 때 너 어디 있었 니? :) –
안녕하세요 레미, 나는 마크에서 조금 느려졌습니다 ;-) - 나는 상당히 새로운 편입니다. 비슷한 오류 문자열을 검색하는 게시물을 발견했습니다. 내가 전화 체인을 따라 어딘가에서 인수 명령을 엉망으로 만들고 핵심 경로를 httplib에 전달하지 않은 것으로 드러났다. – Blairo