2012-09-06 4 views
1

며칠 동안 붙어있어서 아직도 알아 내지 못했습니다. 난 단지 파이썬에서 간단한 TLS C/S 통신을 만들고 싶다. EC2를 사용하는 서버의 경우 클라이언트는 내 랩톱을 사용합니다. 설치 및 정상 소켓 통신 테스트 및 모든 정상적으로 작동합니다.클라이언트 측의 인증서가

공식 문서에서 this tutorial을 시도하면 문제가 발생합니다. 다음 클라이언트 코드의 경우 :

# require a certificate from the server 
ssl_sock = ssl.wrap_socket(s, 
          ca_certs="/etc/ca_certs_file", 
          cert_reqs=ssl.CERT_REQUIRED) 

는 지금까지 내가 알고있는 부분 /etc/ca_certs_file는 CA의 일부 인증해야합니다. 나는 그들을 어디에서 찾아야하는지 혼란 스럽다. 실제로 EC2 서버의 /etc/ssl/certs에 .pem 파일이 있지만 클라이언트, 내 랩톱에는 아무것도 없습니다.

는 또한, this tutorial on openssl에 따른 사용자 인증서를 생성하려고 내 EC2 서버에 동일한 디렉토리에 클라이언트에 대한 cakey.pem, cacert.pem 서버에 대한, userkey.pem, usercert-req.pem, 모두를 생성하는 단계를 따랐다.

Using configuration from /usr/lib/ssl/openssl.cnf 
Enter pass phrase for ./demoCA/private/cakey.pem: 
unable to load certificate 
140420412405408:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE 

그래서 실제로 방법이 인증서 파일이 생성 얻을한다 : 나는 openssl ca -in usercert-req.pem -out usercert.pem을 실행하면 오류가 출력? 서버 측에서 생성 한 다음 클라이언트가 공중에서 요청할 때까지 기다리거나 클라이언트 측에서 생성하거나 타사에서 얻고 클라이언트 측에서 직접 사용합니까?

아무도 안내 할 수 있습니까? 어떤 도움을 주셔서 감사합니다.

답변

2

이 자체 서명 된 인증서 쌍을 생성, 개인 키가 동일한 파일에있을 것입니다 것입니다 :

new_client_socket, address = server_socket.accept() 
secured_client_socket = ssl.wrap_socket(new_client_socket, 
             server_side=True, 
             certfile='cert.pem', 
             keyfile='cert.pem', 
             ssl_version=ssl.PROTOCOL_TLSv1) 

그리고 클라이언트 응용 프로그램 :

openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pem 

그리고 서버 측 파이썬에서 :

unsecured_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
client_socket = ssl.wrap_socket(unsecured_client_socket, 
           ca_certs='cert.pem', 
           cert_reqs=ssl.CERT_REQUIRED, 
           ssl_version=ssl.PROTOCOL_TLSv1) 
+0

답장을 보내 주셔서 감사합니다. 그래서 명령에 의해 같은 이름의 두 .pem 파일을 생성하여 모든 정보를 하나의 파일에 저장합니까? – Yulong

+0

예 두 개의 키가 동일한 파일에 배치됩니다. 파일을 생성 할 때마다 다른쪽에 복사하기 만하면 클라이언트와 서버 모두 동일한 파일을 사용합니다. 두 개의 다른 파일 이름을 지정하면 키는 물론 두 개의 서로 다른 파일에 배치됩니다. – andrean

+0

알겠습니다. 나는 그것이 효과가있어. 고마워요! – Yulong

관련 문제