Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 标记为不可导出的证书_Wcf_Certificate - Fatal编程技术网

Wcf 标记为不可导出的证书

Wcf 标记为不可导出的证书,wcf,certificate,Wcf,Certificate,我正在尝试为自己制作一个开发证书链,以便对WCF进行一些测试。我遵循msdn上的说明: 不幸的是,说明不起作用。私钥不可导出。我甚至在makecert.exe中使用“-pe”选项重新尝试了它,但仍然不起作用。我在以管理员身份运行时尝试过它,但它不起作用。在mmc本身中,当使用“导出”时,它询问私钥的第一个屏幕上的“是/否”选项变灰,下面的消息显示:“关联的私钥标记为不可导出。只能导出证书。” 有什么建议吗?可能是MSDN更新的程序,还是另一个完整的程序?我所要寻找的只是一个证书,可以与WCF一起

我正在尝试为自己制作一个开发证书链,以便对WCF进行一些测试。我遵循msdn上的说明:

不幸的是,说明不起作用。私钥不可导出。我甚至在makecert.exe中使用“-pe”选项重新尝试了它,但仍然不起作用。我在以管理员身份运行时尝试过它,但它不起作用。在mmc本身中,当使用“导出”时,它询问私钥的第一个屏幕上的“是/否”选项变灰,下面的消息显示:“关联的私钥标记为不可导出。只能导出证书。”

有什么建议吗?可能是MSDN更新的程序,还是另一个完整的程序?我所要寻找的只是一个证书,可以与WCF一起用于一些基本测试。这是在Windows 8 Pro上,但我怀疑这是否重要。

您可以始终使用创建证书,然后只需将证书导入Windows证书存储。从命令行执行此操作非常简单:

openssl genrsa -des3 -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

第一行生成私钥,第二行生成实际的自签名证书。有一个

对我来说,仍然需要找到option-pe不起作用的原因

答案在中给出,可能对您有所帮助

建议先输出专用文件,然后使用证书和私钥生成PFX文件,然后导入此PFX文件。

请参见此。几个月前,我在一个WCF项目中使用了它

创建证书颁发机构 使用SHA1(-r)为签名(-sky签名)创建具有可导出私钥(-pe)的自签名证书(-r)。 私钥被写入文件(-sv)

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

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

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

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

certutil -user -addstore Root CA.cer

请尝试SSL诊断工具

您应该能够为IIS创建开发证书,而不必担心:


是的,该工具还可以让您进行一些诊断。

这是个不错的主意,但我希望得到一个解释,说明为什么makecert.exe即使使用-pe选项也无法工作。但至于你的答案本身,我想我需要将privkey.pem导入到受信任的存储中,并将cacert导入到我的“常规”存储中?还是怎样你的回答还需要一些说明。对不起,我上个星期基本上都没上网了。您要做的是将证书的私钥和公共部分合并到PKCS12文件中,然后将其导入您的受信任存储。你可以在digitallycreated的链接上找到这样做的说明,这很酷,但是除了打字错误(不是主要的,可以解决,使用pvk2pfx技术,他们的文件名错误),你会得到一个SecurityNegotiationException,它无法检查证书的吊销状态。我知道你也可以通过编程解决这个问题,但我想要100%有效的东西。如果您可以编辑链接命令的错误,我会将您标记为正确,但实际上,它不起作用。
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
certutil -user -addstore Root CA.cer