2012-09-29 2 views
1

CPP로 작성된 내 사용자 지정 ssl 서버에 연결하려고했습니다. 그것은 클라이언트 인증 기능을 가지고 있습니다. 그것의 던지는 오류 Wireshark를 통해 볼 때 나쁜 인증서. 오류가 반환 된 서버 측에서 잘못된 인증서 오류를 반환하는 SSL 클라이언트 인증

14560:error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned:s3_srvr.c:2619: 

가 나는 클라이언트 와이어 샤크에서 인증서를 돌아 볼 수있는 클라이언트 인증서를

SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); 
SSL_CTX_set_verify_depth(ctx, 1); 

를 요청하는 강제로 다음 코드를 사용했다.

서버 측에서 클라이언트 인증서를 확인하는 데 사용되는 공개 키를 설정하는 데 사용해야하는 기능은 무엇입니까?

SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); 

당신 아마 필요 : 클라이언트가 서버에 인증서를 표시하지 않는 당신이 명시 적으로 클라이언트가 하나의 (서버 코드에) 제시해야한다고 요구처럼 보이는 오류 메시지에서

답변

1

(개인 키와 함께) 인증서를 사용하도록 클라이언트 코드에 알려주는 것입니다.

SSL_CTX_use_certificate_chain_file(ctx, pcszCertPath); 
SSL_CTX_use_PrivateKey_file(ctx, pcszPrivKeyPath,SSL_FILETYPE_PEM); 

나는 희망이있다. 또한 서버가 동일한 CA를 신뢰하는 동일한 인증서 체인을 사용하는지 확인하십시오. 이것이 문제가되면 알려주세요. 제가 도와 드리겠습니다.

0

wireshark를 사용하면 서버가 클라이언트의 인증서를 요청했는지 확인할 수 있습니다. 명령은 "CertificateRequest"입니다.

0
나는 비슷한 오류가 발생했다

(만 줄 번호 다름) :

140671281543104 : 오류 : 140890B2 : SSL 루틴 : SSL3_GET_CLIENT_CERTIFICATE : 어떤 인증서가 반환 : s3_srvr.c : 3292 :

내가 생성 한 자체 서명 된 인증서는 https://help.ubuntu.com/community/OpenSSL에서 언급 한 절차를 사용하십시오.

하루 동안 오류를 저글링 한 후 자체 생성 CA가 내가 사용했던 컴퓨터의 신뢰 체인에 없기 때문에 오류가 발견되었습니다.

이 RHEL-7의 신뢰 체인에 CA를 추가하려면, 하나는 아래의 절차를 수행 할 수 있습니다
 To add a certificate in the simple PEM or DER file formats to the 
     list of CAs trusted on the system: 

     Copy it to the 
       /etc/pki/ca-trust/source/anchors/ 
     subdirectory, and run the 
       update-ca-trust 
     command. 

     If your certificate is in the extended BEGIN TRUSTED file format, 
     then place it into the main source/ directory instead. 

나는 위의 절차가 너무 페도라를 위해 따라야 할 수 있다고 생각합니다. "update-ca-trust"명령을 사용할 수없는 경우 "update-ca-certificates"와 같은 명령을 탐색하는 것이 유용 할 수 있습니다. 희망이 있으면 도움이 될 것입니다. 그것은 최소한의 영향을로

0

Difference Between SSLCACertificateFile and SSLCertificateChainFile

SSLCertificateChainFile은 일반적으로 선택할 수있는 올바른 방법입니다; 나열된 파일이 연결된 모든 클라이언트에 인증서와 함께 전송됩니다.

이 문제를 해결하려면 다음 파일에 모든 루트 CA를 제공 있어 SSLCACertificateFile (이하 "CACert") 않는 모든 SSLCertificateChainFile는 (이하 "체인"), 그리고 추가로 서명 문제의 인증서의 사용을 허용하지 않습니다 클라이언트 인증서. 이런 종류의 인증은 매우 드뭅니다. 적어도 사용하고 있지 않다면 Chain 대신 CACert를 사용하여 기능을 향상시킬 이유가 없습니다. 플립 사이드에서는 추가 기능에 아무런 해가 없다고 주장 할 수 있으며 CACert는 모든 사례를 다룹니다. 두 인수 모두 유효합니다.

말할 것도없이, cert 공급 업체에 문의하면 말할 필요도없이 CACert over Chain으로 밀어 넣을 것입니다. 다른 제품 (클라이언트 인증서)에서 줄을 팔 수 있기 때문입니다. ;)

관련 문제