2014-01-16 2 views
13

GoDaddy에서 발행 한 SSL 인증서가 .crt 형식입니다. 또한 개인 키가 포함 된 .pfx 형식의 만료 된 이전 인증서가 있습니다.WCF의 Net.Tcp 바인딩에 사용할 개인 키로 SSL .crt 인증서에 연결

이제 원래 개인 키를 발급 된 인증서와 결합하여 Windows 인증서 저장소에 설치하기에 적합한 .pfx 파일을 만드는 문제에 직면하고 있습니다.

나는 코드 서명 인증서 (this Q/A pair on SO에 설명되어 있음)를 생성하기 위해 비슷한 상황에서 성공적으로 사용 된 단계를 수행했습니다. 결과 인증서는 HTTPS의 경우 에서 작동하지만 WCF의 Net.Tcp 끝점에서는 작동하지 않습니다. 같은 엔드 포인트를 사용하는 경우, 그것은 다음 오류로 인해 초기화에 실패 : 대신 domain.comwww.domain.com를 사용하는 것이 필요

ArgumentException: It is likely that certificate 'CN=domain.com, O="Company", L=Abc, S=Abc, C=XY' may not have a private key that is capable of key exchange or the process may not have access rights for the private key. Please see inner exception for detail.

Some sources 주장 것이다. 이 일 수 있지만 어떤 경우에는 문제가 될 수 있지만 내 경우에는 근본 원인이 아님이 입증되었습니다.

이 문제의 근본 원인은 무엇이고 어떻게 수정해야합니까?

답변

11

in this answer 단계를 수행 한 결과로 인증서가 .spc을 중간 형식으로 생성하면 KeyExchange 플래그가 손실됩니다.

개인 키를 사용하여 .crt에 가입하는 올바른 방법이처럼 .pem 형식의 개인 키를 사용하는 것입니다

  1. 에서 GoDaddy에서 새 Ssl.crt 인증서를 얻습니다.
  2. 수출 만료 된 PFX에서 PEM 형식의 개인 키

    openssl.exe pkcs12 -export -in SslCert.crt -inkey SslPrivateKey.pem -out FullCert.pfx 
    

.pfx 지금 을 가지고 결과 :

openssl.exe pkcs12 -in ExpiredSslCert.pfx -nocerts -out SslPrivateKey.pem 
  • 가 PFX로 CRT와 PEM을 결합 KeyExchange 플래그 및 WCF Net.Tcp 바인딩을 작동합니다.

  • 관련 문제