我有一个应用程序 (Cognos),它通过两种机制提供网页:通过 IIS 和通过 Java 应用程序。我们需要为这两种机制启用 SSL。IIS 已完成。我们现在正在开发 Java 小程序。
IIS 证书是通过在 IIS 中创建证书请求并将其发送给 CA 生成的。他们返回了一个证书,我们将其安装到 IIS 中,一切正常 - 我们可以使用 HTTPS 在浏览器中访问这些页面。
我尝试将同一证书导入 Java 应用程序证书存储区。但是我收到了应用程序特定的错误。
这是使用应用程序特殊命令行工具完成的。
但基本上它看起来像是试图替换别名下的现有未签名证书加密带有签名的证书。
这是使用提供的 GUI 工具显示该过程的页面
http://www-01.ibm.com/support/docview.wss?uid=swg22004239
我的问题是证书已经从 CA 返回,而我没有在此工具中生成请求。
我有一个有效的证书,但我无法遵循这些说明,因为他们假定请求是从这个密钥库生成的。
经过这个过程,我们似乎需要从 Cognos 证书存储区生成一个 CSR,将其发送给 CA,然后获取另一个相同的证书主持人,但起源 CSR 不同。
这意味着我们拥有同一主机的两个证书,这对我来说没有意义。
主要有:
- 同一主机可以拥有两个或多个有效证书吗?
- 如果我有一个从密钥库 A 的 CSR 生成的证书,有什么方法可以导入并在同一台服务器上的密钥库 B 中使用它吗?我需要原始请求中的任何内容才能执行此操作吗?
编辑:
随着我继续研究这个问题,我意识到当请求生成时,它会在密钥库中保存一个私钥。所以我认为问题不在于我有两个密钥库,问题在于我不知道如何在第二个密钥库中重用原始密钥库中的私钥
答案1
您需要从 IIS 导出密钥和证书。您应该能够将其导出到 PKCS7 文件中。使用keytool
将其导入到您的 Java 密钥库中。(如果您愿意,也可以使用 PKCS7 文件。)
如果 IIS 正在交付小程序,则您不需要小程序的服务器证书。如果您使用其他服务器来交付小程序,则需要将密钥导入该服务器。
我认为您的问题与签署小程序有关。您的密钥可能未被标记为可用于代码签名。使用类似keytool
或浏览器的工具来显示证书上的标志。有可能拥有一个对服务器和代码签名都有用的证书。
编辑:看来您有一个证书既适合代码签名(您应该签署您的小程序。),也适合加密(HTTPS)。如果您希望将其用于 HTTPS,它应该为您希望使用它的每个域都有一个主题备用名称。这将允许验证证书是否适用于该域。
通常情况下,您不会使用小程序来访问服务器。它可能会打开与加载它的服务器的连接以查找其他类。它还可能会打开与其他服务器的其他连接。现代浏览器会要求您指定小程序所需的访问权限,以便用户可以验证是否授予他们访问权限。
答案2
答案3
keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12
-destkeystore clientcert.jks -deststoretype JKS
这应该会将您的 pfx 导入密钥库。这是我上次导入 pfx 时使用的方法