【问题标题】:Joining an SSL .crt certificate with a private key for use with WCF's Net.Tcp binding使用私钥加入 SSL .crt 证书以用于 WCF 的 Net.Tcp 绑定
【发布时间】:2014-02-05 20:36:11
【问题描述】:

我有一个 GoDaddy 颁发的 .crt 格式的 SSL 证书。此外,我还有以前过期的 .pfx 格式的证书,其中包括一个私钥。

现在我面临将原始私钥与颁发的证书连接以形成适合安装到 Windows 证书存储的.pfx 文件的问题。

我按照我在类似情况下成功使用的步骤来生成代码签名证书(记录在this Q/A pair on SO 中)。生成的证书适用于 HTTPS,但不适用于 WCF 的 Net.Tcp 端点。使用此类端点时,由于以下错误无法初始化:

ArgumentException:证书 'CN=domain.com, O="Company", L=Abc, S=Abc, C=XY' 可能没有能够进行密钥交换或进程的私钥可能没有私钥的访问权限。有关详细信息,请参阅内部异常。

Some sources 声称有必要使用www.domain.com 而不是domain.com。虽然这可能在某些情况下是问题,但事实证明它不是我的问题的根本原因。

此问题的根本原因是什么以及如何解决?

【问题讨论】:

    标签: wcf ssl net.tcp


    【解决方案1】:

    问题是从.spc 作为中间格式创建的证书,由于遵循in this answer 的步骤,导致KeyExchange 标志丢失。

    用私钥加入.crt的正确方法是使用.pem格式的私钥,像这样:

    1. 从 GoDaddy 获取新的 Ssl.crt 证书。
    2. 从过期的 PFX 中导出 PEM 格式的私钥:

      openssl.exe pkcs12 -in ExpiredSslCert.pfx -nocerts -out SslPrivateKey.pem
      
    3. 将 CRT 和 PEM 组合到 PFX 中:

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

    生成的.pfx 现在具有KeyExchange 标志并适用于 WCF Net.Tcp 绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2020-07-13
      • 1970-01-01
      • 2016-10-07
      • 2016-05-07
      • 2013-03-29
      相关资源
      最近更新 更多