2009-10-15 6 views
2

SSL 소켓을 제공하기 위해 SslStream을 사용하는 .Net 서버 응용 프로그램에서 작업하고 있습니다. libcurl 기반 클라이언트와 같은 일부 클라이언트에서 작동하지만 다른 클라이언트는 중간 인증서가 없기 때문에 오류가 발생합니다. 중간 인증서를 SslStream 또는 X509Certificate2 개체와 연결하여 클라이언트를 행복하게 만들려면 어떻게해야합니까? 난은 OpenSSL을 사용한 경우서버 응용 프로그램에서 SslStream 및 X509Certificate2로 중간 인증서 사용

X509Certificate2 cert = new X509Certificate2("cert.pfx", ""); 
theSslStream.BeginAuthenticateAsServer(cert, ...); 

내가 SSL_CTX_add_extra_chain_cert() 함께 할 것 :

여기에 연결을 수락 할 때 내가 지금 사용하고 코드입니다. X509Chain 객체를 살펴 봤지만 어떻게 적합하게 보이는지 알지 못합니다.

고마워요.

답변

2

사용중인 pfx에서 전체 체인을 포함 시키려고 했습니까 (예 : OpenSSL을 사용하여 모두 연결 했습니까?)? SSLStream과 함께 특별히 시도하지는 않았지만 WCF는 중간 인증서를 포함하는 명시적인 방법을 제공하지 않습니다. 중간 인증서가 원본 .pfx에서 사용 가능한 경우 자동으로 전체 체인을 제공합니다.

+1

이것이 실제로 수행해야했던 작업입니다. openssl pkcs12 -in cert.pfx -out cert.pem -nodes ... 편집 된 cert.pem 개인 키를 자체 파일 인 cert.key에 넣습니다. 중간 인증서를 다운로드했습니다 (Go Daddy, gd_bundle.crt에서). 하려면 openssl PKCS12 -export -in cert.pem -inkey cert.key -out cert_new.pfx -CAfile gd_bundle.crt 쇄 다음 cert_new.pfx은 X509Certificate2 개체를 만드는 데, 이것은 클라이언트를 만들 것으로 보인다 될 수있다 더 행복한 질문. –

관련 문제