我已经在我们的 Windows 服务器上生成了 CSR 请求(我们需要为 Https 绑定在此服务器上托管的应用程序),使用 keytool 中的以下命令:
Keytool -genkey -alias <server name> -keyalg RSA -keysize 2048 -keystore <server name>.keystore
keytool -certreq -keyalg RSA -alias <server name> -file certreq.csr -keystore <server name>.keystore
之后我得到了一个 csr 和一个 keystore 文件,我转发它们来颁发 SSL。团队给了我一个 zip 文件作为证书(包含一个 .cer 和一个 .p7b文件)。现在我不清楚如何在IIS中使用这两个文件。
到目前为止我们已经尝试过:
- 使用“完整证书请求”选项在 IIS 中导入了 .cer,但是当我们再次检查时,该证书从 IIS 中消失。
- 使用完整证书请求选项在 IIS 中导入了 .p7b,但在这种情况下证书也会消失。
- 在个人证书中的证书存储中导入了 .cer,但它没有出现在 IIS 设置中。
- 在中间证书的证书存储中导入了 .p7b,但它没有出现在 IIS 设置中。
- 导入了个人证书中的证书存储中的 .cer 和中间证书中的 .p7b 文件,但 IIS 设置中未出现任何证书。
- 尝试从证书存储区中导出 PFX 格式的证书,但在导出时,pfx 选项显示为灰色。
答案1
Windows 有自己的创建证书请求的工具。您可以使用比较笨拙certreq
或更简单的管理控制台(Certificates
在 Server 2008R2 及更早版本上为计算机帐户添加插件,或certlm.msc
在 Server 2012 及更高版本上运行)。
除了 CA 返回的证书之外,您还需要在终端实体上安装私钥。就您而言,该私钥位于运行时使用的密钥库中keytool
,因此 Windows 无法访问。
您有两个选择:
- 将新证书导入密钥库并将其和私钥导出为 PKCS#12(
.pfx
),然后可以将其导入 Windows。 - 使用 Microsoft 工具生成新请求并由您的 CA 签名。当您将返回的证书导入 Windows 时,它将与其私钥匹配,您可以在 IIS 中使用它。
如果这是内部 CA,我会选择后者。但是,外部 CA 可能会向您收取另一份证书的费用,因此您需要决定最具成本效益的解决方案。
如果您决定采用前者并将新签名的证书导入到您的密钥库,请使用以下命令:
keytool -importcert -file certificate.cer -keystore <server name>.keystore -alias <server name>
然后将密钥库转换为 PKCS#12,然后可以将其导入 Windows,方法如下:
keytool -importkeystore -srckeystore <server name>.keystore -destkeystore <server name>.pfx -srcstoretype JKS - deststoretype PKCS12 -deststorepass <new password>
您需要 Java 8 或更高版本来运行上述命令。
任何中间证书也应发送给您。这可能就是文件中的内容p7b
(尽管您尚未说明其内容)。它们应导入 Windows 的中间证书颁发机构存储,您似乎已经这样做了。
一旦您拥有*.pfx
文件,请将其导入服务器的本地计算机证书存储(不要在 IIS MMC 管理单元上浪费时间)。
启动certlm.msc
(W2K12 或更高版本)或添加证书MMC 管理单元配置为计算机帐户和本地计算机(适用于 W2K8R2 或更早版本)。右键单击个人的存储并导入证书。如果您在文件中收到任何其他证书*.pfx
,请将它们移动到中级证书颁发机构存储(用于子 CA 证书)。否则,请将它们分别导入到该存储。
答案2
我正在使用 Windows Server 2012 和 IIS 8:
将 .p7b 文件放入您选择的文件夹中。右键单击该文件,然后单击“安装证书”。
运行certlm.msc
找到您安装的证书,右键单击文件,然后单击打开。单击安装证书。选择本地计算机单选按钮,下一步。选择“自动选择证书存储...”单击完成。单击确定。关闭应用程序。
打开 IIS,选择您的默认网站,然后转到绑定。设置类型 = https,然后选择您上面安装的新证书。保存。