2017-11-18 3 views
0

서버에서 생성 된 인증서를 사용하여 클라이언트에서 서버에 인증하고 싶습니다. 서버 -c.c.crt가 있고 작동중인 CURL 명령이 아래에 있습니다. 비슷한 요청을 사용하여 비슷한 요청을 보냅니다. 파이썬 요청 모듈.파이썬 요청 모듈 SSLError

$ curl -X GET -u sat_username:sat_password \ 
-H "Accept:application/json" --cacert katello-server-ca.crt \ 
https://satellite6.example.com/katello/api/organizations 

나는 다음과 같은 방법으로 시도했지만 일부 예외가 발생했습니다.이 문제를 해결하는 데 도움을 줄 수 있습니까?

python requestsCert.py 
Traceback (most recent call last): 
    File "requestsCert.py", line 2, in <module> 
    res=requests.get('https://satellite6.example.com/katello/api/organizations', cert='/certificateTests/katello-server-ca.crt', verify=True) 
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 68, in get 
    return request('get', url, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 50, in request 
    response = session.request(method=method, url=url, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 464, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 576, in send 
    r = adapter.send(request, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 431, in send 
    raise SSLError(e, request=request) 
requests.exceptions.SSLError: [SSL] PEM lib (_ssl.c:2554) 
+0

밀접하게 관련 : https://stackoverflow.com/questions/30109449/what-does-sslerror-ssl-pem-lib-ssl-c2532-mean-using-the-python-ssl-libr하지만 저는 아닙니다. 그것이이 질문에서 중복되기 때문에,'요청'코드에서 오류가 발생하고, 다른 질문에서는'요청'이 관련되지 않습니다. –

답변

1
res=requests.get('https://...', cert='/certificateTests/katello-server-ca.crt', verify=True) 

requests.getcert 인수는 상호 인증을 위해 사용되어야하는 클라이언트 인증서와 키를 지정하는 데 사용됩니다. curl에서는 신뢰 된 CA를 --cacert 인수로 지정하는 데 사용되지 않습니다. requests에 대한 설명서에 SSL Cert VerificationClient Side Certificates를 참조

res=requests.get('https://...', verify='/certificateTests/katello-server-ca.crt') 

자세한 내용은 대신 당신은 verify 인수를 사용합니다.