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 예외')는 다른 것이 잘못되었다는 것을 의미합니까?
이것은 고유 한 URL입니까? https : //www.google.com과 같은 공개 URL에 액세스 해보세요. 인증서가 자체 서명되었거나 조작 된 경우에도 인증서 검사를 사용하지 않는 SSL 제품군을 계속 불평했습니다. – Pace
@Pace 예,이 URL은 Google 자체 URL입니다. 이 서버는 인터넷에 직접 액세스하지 않고 녹색 영역에 있기 때문에 공용 URL을 테스트 할 수 없습니다. 우리 네트워크에서 몇 가지 다른 HTTPS URL을 시도하고 동일한 예외가 발생했습니다. 모두 자기 서명이 아닌 제 3 자 서명 인증서를 사용합니다. 인증서가 잘못된 형식인지 확인하려면 어떻게합니까? – MD6380
인증서의 이름이 서버의 호스트 이름과 일치하지 않으면 인증서 형식이 잘못되었다고 생각할 수있는 유일한 것입니다. 잘 작동하는 다른 서버에서 동일한 오류가 발생하면 문제가되지 않습니다. – Pace