使用makecert进行开发SSL

时间:2009-01-30 18:40:05

标签: iis ssl makecert

这是我的情况:

我正在尝试创建一个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 个答案:

答案 0 :(得分:139)

以下是我执行此操作的脚本:

创建证书颁发机构

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

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

certutil -user -addstore Root CA.cer

要以编程方式在IIS 6.0中安装证书,请查看this Microsoft KB article。对于IIS 7.0,我不知道。

答案 1 :(得分:12)

创建证书颁发机构时,应将-cy authority添加到交换机,否则某些证书存储区将不会将其视为正确的CA.