使用makecert进行开发SSL

55

这是我的情况:

我正在尝试创建一个SSL证书,该证书将安装在所有开发者的机器以及两个内部服务器上(所有内容均为非生产性质)。

我需要做什么才能创建一个可以在所有这些地方安装的证书?

现在,我已经使用Microsoft Visual Studio 8\SDK\v2.0\Bin中的makecert应用程序编写了以下代码:

makecert -r -pe -n "CN=MySite.com Dev" -b 01/01/2000 -e 01/01/2033 -eku 1.3.6.1.5.5.7.3.1 -ss Root -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 mycert.cer

然而,我不确定如何将这个 .cer 文件放到其他电脑上,当我在我的本地机器的IIS上安装它后,每次通过 https: 访问页面时都会弹出安全提示(即使我已经安装了证书)。有人做过这件事吗?

2个回答

141

下面是我用来完成此操作的脚本:

创建证书颁发机构(Certificate Authority)

创建一个自签名证书(-r),并生成一把可导出私钥(-pe),使用SHA1算法(-r)为签名(-sky signature)。 私钥会被写入一个文件(-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

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

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

certutil -user -addstore Root CA.cer

要在IIS 6.0中以编程方式安装证书,请查看此Microsoft KB文章。至于IIS 7.0,我不清楚。


3
我正在按照这些步骤操作,成功创建了pfx文件,但当我尝试将其导入到IIS7时,它显示"指定的网络密码不正确",您知道如何解决这个问题吗?谢谢。 - Tigran
8
跟进:我只是没有输入密码,但它还是导入成功了。 - Tigran
2
@dscoduc 不错的工具,对于Win7需要使用masty的参数(-cy authority)。 - Chris S
3
对于IIS7来说,只需打开IIS管理控制台 -> 服务器证书 -> 右键点击 -> 创建自签名证书。然后将其添加到您的站点绑定中即可。 - Chris S
1
这绝对是我见过的最完整的答案。毫无疑问是+1。 - Jesse
显示剩余8条评论

12

在创建证书颁发机构时,您应该为开关添加-cy权限,否则某些证书存储将无法将其视为正确的CA。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接