繁体   English   中英

将 PEM 文件转换为 .JKS Key Store 和 Trust Store 文件

[英]Converting a PEM file to a .JKS Key Store and Trust Store files

服务器端的PEM文件,打开后格式如下:

-----BEGIN CERTIFICATE-----
somestuff1234
-----END CERTIFICATE-----

我正在尝试将其转换为获取两个 JKS 文件(一个信任库和密钥库),我可以使用我的 java 应用程序通过 SSL 调用服务器。

任何人都可以帮助轻松分解如何使用 openssl 然后使用 java 密钥库来执行此操作吗? 我尝试按照以下说明进行操作: https://docs.oracle.com/cd/E35976_01/server.740/es_admin/src/tadm_ssl_convert_pem_to_jks.html

但由于某种原因,我无法成功导入密钥库,因为它是空的。 PS 在按照这些说明进行操作时,我从 der 创建了 PKSC12,但没有输入私钥,因为没有提供私钥。

我是否需要使用我自己也需要创建的私钥,但不确定是否需要它,因为我只获得了证书? 我被告知中间证书是在 TLS 握手中发送的。

感谢您对此的任何帮助。

尝试使用调试模式和有关 SSL 服务器的特定信任库运行 java 代码,如下所述: How to configure trustStore for javax.net.ssl.trustStore on windows?

如果该 PEM 文件中唯一的内容就是您发布的内容:

-----BEGIN CERTIFICATE-----
somestuff1234
-----END CERTIFICATE-----

您将无法创建适合用作接受连接的 TLS 服务器的完整密钥库。

为此,您需要与证书相对应的私钥。

我是否需要使用我自己也需要创建的私钥,但不确定是否需要它,因为我只获得了证书?

否 - 连同其识别数据,您的证书中有一个公钥。 整个证书由您的 CA 以加密方式签名 - 这就是“信任”转移到您的证书的方式。 您证书中的公钥源自特定的私钥。

为什么它不起作用? 因为使用证书中的公钥加密的数据只能使用派生公钥的私钥解密。

您的证书只有在与正确的私钥配对时才有效。

但:

我从 der 创建了 PKSC12,但没有输入私钥,因为没有提供私钥。

您必须拥有私钥和证书才能运行 TLS 服务器。*

编辑:

出于同样的原因,您必须将正确的私钥与您的证书配对,才能在连接到 TLS 服务器时将其用作客户端证书。

此外,TLS 证书是公开的——如果您只需要它来证明您的身份,那么将其公之于众会使它毫无用处。 您拥有适当的私钥就可以证明该证书是您的证书,而不是我的或其他任何人的。

在您为您拥有的证书找到正确的私钥之前,您的 TLS 服务器或与 TLS 服务器的客户端连接将无法工作。 如果您或您的组织丢失了该私钥,则必须通过从该新私钥创建证书的过程创建一个新的私钥和 go。

因为没有正确的私钥,你现在拥有的证书就毫无用处。

* - 技术上不正确。 TLS 标准确实支持不需要任何证书或私钥的“匿名”密码套件 但几乎没有应用程序支持匿名密码套件。 例如,OpenSSL 如果您自己从源代码编译它,则仅支持匿名密码套件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM