IIS6:从命令行创建/安装 SSL 自签名证书

Posted

技术标签:

【中文标题】IIS6:从命令行创建/安装 SSL 自签名证书【英文标题】:IIS6: Create/install SSL self-signed cert from command line 【发布时间】:2011-08-16 20:19:57 【问题描述】:

我想在 IIS6 中为网站自动设置 SSL。看来 selfSSL 和 certutil 可用于执行此操作,但证书对我来说是新的,我不确定如何将它们放在一起。

据我了解,我需要:

    创建证书 将证书分配给网站 向网站添加安全 (SSL/443) 绑定

如果站点证书已经创建,我还想避免创建新证书。这样我就不会得到一堆冗余证书。

【问题讨论】:

您是否已经拥有证书,或者您想要为每个单独的服务器创建一个新证书? 这是一个很好的问题,我期待听到答案。我要警告的一件事是使用 SelfSSL,尤其是在一个 IIS 实例中有多个站点时。以我的经验,一次只处理一个站点是可以的。我相信这个问题有一个解决方法,甚至有一个没有错误的更新工具(SSLDiag?)。以下博客评论线程中有更多关于该问题的详细信息 - blogs.msdn.com/b/david.wang/archive/2005/04/20/… Lee - 我想要一个新证书。我发现 selfSSL 似乎通过命令行 Saul 提供了这个 - 谢谢你的信息!我们可能会在我们的 dev/sqa/mock 环境中使用 selfSSL(或类似的东西),但在生产环境中手动创建。 【参考方案1】:

我建议您查看 IIS 6 资源工具包:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17275

资源工具包中有一个名为selfssl.exe 的工具 - 它可以自动创建、分配甚至信任新创建的证书。在我工作的地方,我们经常使用它来确保我们的开发盒拥有我们可以在测试/开发期间使用的证书。

这是我们使用的命令行 - 它将使用 1024 的密钥大小创建证书(用于本地主机),信任它,并使其有效期为 ~10 年:

selfssl.exe /T /N:CN=localhost /K:1024 /V:3650

如果您托管多个站点,则需要使用 /S 参数来指定要添加证书的站点 ID。

注意:这在 WinXP 上也可以像使用 IIS 5 的冠军一样工作,但我从未在任何 IIS 7 系列上尝试过。

【讨论】:

好像新支持TSL1.2?【参考方案2】:

如果您使用Wix 来编写您的设置,那么运行这个CustomAction(它只是运行SelfSSL)将为您解决问题:

<CustomAction Id="InstallCert" 
              ExeCommand="selfssl.exe /N:CN=fqdn.myserver.com /V:365" /> 

<InstallExecuteSequence> 
    <Custom Action="InstallCert" After="InstallFinalize" /> 
</InstallExecuteSequence> 

此操作将

生成证书 将证书安装到Default Web Site 添加 https 绑定

命令行解释:

/N:CN=[fully qualified server name]
/V: = Validity in days (365 in my example)

您可以使用/P:[port number] 开关指定端口。默认值为 443,这是您想要的,因此您可以将其省略。

警告:SelfSSL 似乎存在错误,似乎是resolved。

如果您仍然遇到它,替代方法是切换到具有类似语法的SSLDiag 工具:

SSLDiag.exe /selfssl /n:CN=fqdn.myserver.com /v:365

我没有使用其他设置创作工具(InstallShield 等)的经验,但我确信他们有运行命令行程序的规定。最坏的情况,你可以通过一个批处理文件来运行它!

希望这会有所帮助。

【讨论】:

以上是关于IIS6:从命令行创建/安装 SSL 自签名证书的主要内容,如果未能解决你的问题,请参考以下文章

❖ 自签名 SSL 证书(self-signed SSL certificate)

如何为测试目的创建自签名 SSL 证书? [关闭]

如何在 Chrome 信任的本地 Windows 虚拟主机开发机器上创建/安装自签名 SSL 证书? [复制]

如何创建一个自签名的SSL证书

MAC申请自签名的ssl证书

如何创建一个自签名的SSL证书