【问题标题】:Certificate marked as not exportable标记为不可导出的证书
【发布时间】:2013-04-17 03:49:46
【问题描述】:

我正在尝试为自己创建一个开发证书链,以便对 WCF 进行一些测试。我在这里关注 msdn 上的说明:How to: Create Temporary Certificates for Use During Development

很遗憾,这些说明不起作用。私钥不可导出。我什至用 makecert.exe 的“-pe”选项重新尝试了它,但它仍然不起作用。我在以管理员身份运行时尝试过它,但它不起作用。在 mmc 本身中,当使用“导出”时,询问私钥的第一个屏幕将“是/否”选项灰显,并在其下方显示一条消息:“关联的私钥被标记为不可导出。只有证书可以导出。”

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

【问题讨论】:

    标签: wcf certificate


    【解决方案1】:

    看到这个SO answer。几个月前,我将它用于 WCF 项目。

    创建证书颁发机构

    使用可导出的私钥 (-pe) 创建自签名证书 (-r),使用 SHA1 (-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
    

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

    创建服务器证书

    使用可导出的私钥 (-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
    

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

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

    certutil -user -addstore Root CA.cer
    

    【讨论】:

      【解决方案2】:

      您始终可以使用openssl 创建self-signed certificate,然后您只需将证书导入Windows 证书存储。从命令行很容易做到:

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

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

      【讨论】:

      • 这不是一个坏主意,但我希望能解释为什么 makecert.exe 不起作用,即使使用 -pe 选项也是如此。但是至于您的答案本身,我猜我需要将 privkey.pem 导入受信任的商店,然后将 cacert 导入我的“常规”商店?要不然是啥?您的回答还需要一些说明。
      • 抱歉,上周我基本上没有上网。您要做的是将证书的私钥和公共部分组合到一个 PKCS12 文件中,然后将其导入您的受信任存储中。您可以在help.globalscape.com/help/secureserver3/… 找到相关说明
      【解决方案3】:

      对我来说,仍然是找出选项 -pe 不起作用的原因。

      Make exportable private key with makecerthttp://www.digitallycreated.net/Blog/38/using-makecert-to-create-certificates-for-development 中给出的答案可能对您有所帮助。

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

      【讨论】:

      • digitallycreated 的那个链接很酷,但是除了拼写错误(不是主要的,可以解决方法,使用 pvk2pfx 技术,他们的文件名错误),你会得到一个无法检查的 SecurityNegotiationException证书的撤销状态。我知道您也可以通过编程方式解决这个问题,但我想要 100%工作的东西。如果您可以编辑链接命令的错误之处,我会将您标记为正确,但按原样,它不起作用。
      【解决方案4】:

      试试 SSL 诊断 工具。

      您应该能够轻松地为 IIS 创建开发证书:

      http://www.softpedia.com/get/Internet/Servers/Server-Tools/SSL-Diagnostics.shtml

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-25
        • 1970-01-01
        • 1970-01-01
        • 2021-11-26
        • 2017-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多