2012-07-18 3 views
0

https2를 사용하여 HTTPS GET을 시도하면 다음 오류가 발생합니다.httplib2 socket.sslerror : (-1, 'SSL 예외')

>>> import httplib2 
>>> http = httplib2.Http(cache=None, timeout=30) 
>>> response, content = http.request('https://www.example.com', 'GET') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/app/jython/2.5.2/Lib/site-packages/httplib2/__init__.py", line 1436, in request 
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) 
    File "/app/jython/2.5.2/Lib/site-packages/httplib2/__init__.py", line 1188, in _request 
    (response, content) = self._conn_request(conn, request_uri, method, body, headers) 
    File "/app/jython/2.5.2/Lib/site-packages/httplib2/__init__.py", line 1162, in _conn_request 
    conn.connect() 
    File "/app/jython/2.5.2/Lib/site-packages/httplib2/__init__.py", line 925, in connect 
    raise socket.error, msg 
socket.sslerror: (-1, 'SSL exception') 

나는 SSL에 익숙하지 않아 -1 오류 코드의 의미에 익숙하지 않습니다. 나는 httplib2가 SSL 인증서를 검증하지 않는다는 가정하에 있었다.

일반 wget은 실패하지만 wget --no-check-cert가 작동합니다.

$ wget -qO- https://www.example.com --no-check-certificate 

Up 

브라우저를 통해 URL에 액세스하면 정상적으로 작동하는 것 같습니다. 코드에서 뭔가 잘못하고 있니? 또는 socket.sslerror : (-1, 'SSL 예외')는 다른 것이 잘못되었다는 것을 의미합니까?

+0

이것은 고유 한 URL입니까? https : //www.google.com과 같은 공개 URL에 액세스 해보세요. 인증서가 자체 서명되었거나 조작 된 경우에도 인증서 검사를 사용하지 않는 SSL 제품군을 계속 불평했습니다. – Pace

+0

@Pace 예,이 URL은 Google 자체 URL입니다. 이 서버는 인터넷에 직접 액세스하지 않고 녹색 영역에 있기 때문에 공용 URL을 테스트 할 수 없습니다. 우리 네트워크에서 몇 가지 다른 HTTPS URL을 시도하고 동일한 예외가 발생했습니다. 모두 자기 서명이 아닌 제 3 자 서명 인증서를 사용합니다. 인증서가 잘못된 형식인지 확인하려면 어떻게합니까? – MD6380

+0

인증서의 이름이 서버의 호스트 이름과 일치하지 않으면 인증서 형식이 잘못되었다고 생각할 수있는 유일한 것입니다. 잘 작동하는 다른 서버에서 동일한 오류가 발생하면 문제가되지 않습니다. – Pace

답변

1

SSL 지원은 기본 소켓 모듈에 따라 다릅니다. 이 경우 당신은 SSL 지원을 가지고있는 것처럼 보입니다. 당신은 그것을 비활성화 할 수 있습니다 ...

http = httplib2.Http(cache=None, timeout=30, disable_ssl_certificate_validation=True) 
+0

이것은 작동하지 않았습니다. 같은 예외가 보이지만 예외가 throw되기 전에 출력되어 SSL이 사용되지 않았 음을 보여줍니다. 2012 년 7 월 17 일 10:32:15 PM com.ibm.ws.ssl.config.SSLConfigManager 정보 : ssl.disable.url.hostname.verification.CWPKI0027I – MD6380

+0

흥미 롭습니다. 이 메시지는 WebSphere에서 제공되며 호스트 이름이 인증서와 일치하는지 확인하지는 않지만 인증서가 신뢰되는지 확인하기 위해 검사를 사용하지 않았 음을 나타내지는 않습니다. – Pace

관련 문제