证书标记为不可导出

Kev*_*son 5 wcf certificate

我正在尝试为自己制作一个开发证书链,用于WCF的一些测试.我在这里关注msdn上的文章:如何:创建在开发过程中使用的临时证书

不幸的是,说明不起作用.私钥不可导出.我甚至用makecert.exe的"-pe"选项重新尝试了它,它仍然无法正常工作.我在以管理员身份运行时尝试过它并且不起作用.在mmc本身使用"导出"时,它询问私钥的第一个屏幕显示"是/否"选项,并在其下面显示一条消息:"相关的私钥被标记为不可导出.只有证书可以出口."

有什么建议?MSDN上的更新程序可能还是另一个完全?我正在寻找的是与WCF一起用于某些基本测试的证书.这是在Windows 8 Pro上,但我怀疑这很重要.

lak*_*tak 3

请参阅此答案。几个月前我将它用于 WCF 项目。

创建证书颁发机构

使用 SHA1 (-r) 创建带有可导出私钥 (-pe) 的自签名证书 (-r),用于签名(-sky 签名)。私钥写入文件 (-sv)。

makecert -r -pe -n "CN=My Root Authority" -ss CA -sr CurrentUser ^
         -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer
Run Code Online (Sandbox Code Playgroud)

(^=允许批处理命令行换行)

创建服务器证书

创建带有可导出私钥 (-pe) 的服务器证书,使用 SHA1 (-a) 进行密钥交换 (-sky Exchange)。它可以用作 SSL 服务器证书 (-eku 1.3.6.1.5.5.7.3.1)。颁发证书位于文件 (-ic) 中,密钥 (-iv) 也是如此。使用特定的加密提供程序(-sp、-sy)。

makecert -pe -n "CN=fqdn.of.server" -a sha1 -sky Exchange ^
         -eku 1.3.6.1.5.5.7.3.1 -ic CA.cer -iv CA.pvk ^
         -sp "Microsoft RSA SChannel Cryptographic Provider" ^
         -sy 12 -sv server.pvk server.cer

pvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx
Run Code Online (Sandbox Code Playgroud)

然后,您可以在服务器应用程序中使用 .PFX 文件(或将其安装在 IIS 中)。请注意,默认情况下,pvk2pfx不会将密码应用于输出 PFX 文件-po为此,您需要使用开关。

要使所有客户端计算机都信任它,请将CA.cer安装在其证书存储中(在受信任的根颁发机构存储中)。如果您位于域中,则可以使用 Windows 组策略在全局范围内执行此操作。如果没有,您可以使用certmgr.msc MMC 管理单元或certutil命令行实用程序:

certutil -user -addstore Root CA.cer
Run Code Online (Sandbox Code Playgroud)