2012-12-31 3 views
4

서버가 인증서로 SSL을 사용하여 클라이언트를 인증하는 python에서 서버와 클라이언트를 설정하려고합니다. 온라인으로 많은 SSL 인증서의 예가 있지만, 내가 찾은 모든 것은 서버가 클라이언트와 클라이언트에게 인증서를 제공한다는 것입니다. 클라이언트에 서버에 연결할 수있는 권한이 있는지 확인하려면 서버가 필요합니다. 인증서를 생성하고 보내는 방법과 작동 원리를 이해합니다. 내 코드를 입력했지만 SSL이없는 클라이언트/서버가 정상적으로 작동하며 SSL에 대해 this을 참조했습니다. 이 페이지의 맨 아래에있는 클라이언트/서버 예제는 파이썬에서 SSL 인증서에 대한 나의 이해를 요약 한 것입니다.Python SSL 소켓 클라이언트 인증

나는이 일이별로 진행되지 않는다는 것을 알았지 만, 누군가가 서버의 클라이언트를 다른 방법 대신 클라이언트를 인증하게하는 예제에 대한 기본 수정 사항을 설명 할 수 있다면 그것은 대단 할 것입니다. 또는 예제 또는 심지어 일부 소켓 메소드에 대한 링크를 조사하면 매우 유용합니다. 더 많은 정보가 필요한지 알려주십시오. 나는 막연하지 않고 매일 아침 내내 혼자 정보를 찾겠다는 약속을했습니다.

편집 : 기본 ssl 라이브러리에 충실하려고합니다. 일명 "import ssl". 귀하의 질문은 의미 무엇

답변

3

SSLSocket.getpeercert을 사용하면 인증서를 얻을 수 있습니다. 클라이언트는 서버 측과 마찬가지로 소켓을 래핑 할 때 키와 인증서를 지정해야합니다. 서버 측에서는 ca_certs = "path_to_ca_cert_file"을 전달해야하며 cert_reqs = CERT_REQUIRED도 지정해야합니다 (자세한 내용은 args for ssl.wrap_socket을 참조하십시오.)

인증서 기반 클라이언트 인증/권한 부여? getpeercert를 사용하여 클라이언트 인증서를 얻고 인증서 내의 필드를 액세스하여 일반 인증 경로 (예 : Common Name == User Id)에 사용하는 간단한 문제입니다.

0

정말 확실하지,하지만 당신은 SSL in Python, other resource for SSL in Python, Validating SSL, get SSL Certificate information을 볼 수 있습니다 당신은 아마 다른 좋은 링크를 발견했다.

+0

이 예제 코드에서 링크 된 서버는 클라이언트에게 인증서를 보내고, 클라이언트는 cert의 체인을 사용하여 인증서를 확인하여 서버가 연결되었는지 확인합니다. 반대의 경우가 필요합니다. 클라이언트가 보내야합니다. 서버의 인증서, 서브가있다. r 클라이언트의 인증서를 허용 된 목록과 비교하여 확인하고 마지막으로 클라이언트와의 핸드 셰이크를 완료합니다. 나는 계속 독서를 할 것이다 ... 어쩌면 나는 내가 생각한만큼 이해하지 못할 수도있다. 링크를 가져 주셔서 감사합니다. – user1777820

관련 문제