如何使用PEM文件在Java中创建SSL套接字?

如何使用PEM文件在Java中创建SSL套接字?,java,ssl,certificate,pem,jks,Java,Ssl,Certificate,Pem,Jks,我有一个PEM文件,它被告知,在建立一个SSL套接字时需要用到一些套接字,它连接到C++服务器上进行一些API调用。有人知道我如何读取PEM文件并连接吗?我还获得了parapharse密码。听起来PEM文件是供您登录服务器使用的客户端证书。如果它是客户端证书,而且听起来像是,那么您可能还需要一个ca证书文件来验证服务器证书,以便建立连接 CA证书需要进入信任库,而您的客户端证书需要进入密钥库。在Java中,这两个都是JKS(尽管它对PKCS12的支持有限)。JRE和每个用户都有默认的密钥库/信任


我有一个PEM文件,它被告知,在建立一个SSL套接字时需要用到一些套接字,它连接到C++服务器上进行一些API调用。有人知道我如何读取PEM文件并连接吗?我还获得了parapharse密码。

听起来PEM文件是供您登录服务器使用的客户端证书。如果它是客户端证书,而且听起来像是,那么您可能还需要一个ca证书文件来验证服务器证书,以便建立连接

CA证书需要进入信任库,而您的客户端证书需要进入密钥库。在Java中,这两个都是JKS(尽管它对PKCS12的支持有限)。JRE和每个用户都有默认的密钥库/信任库位置。您还可以在代码中为这些文件指定外部位置,如下例所示。commons ssl库似乎能够直接支持PEM,而不需要JKS,但我没有使用它

Java中这些密钥库的默认密码短语是“changeit”,不带引号

显示您必须将PEM读入密钥库/信任库。这是

正确设置信任库和密钥库后,需要将以下内容传递给JVM:

javax.net.ssl.keyStore
javax.net.ssl.keyStoreType
javax.net.ssl.keyStorePassword
javax.net.ssl.trustStore
javax.net.ssl.trustStoreType
javax.net.ssl.trustStorePassword
您可以将它们指定为JRE的-D参数,或者,如下面的示例所示,以编程方式指定


完成后,下面是创建套接字的步骤。另外,这里是的JavaAPI。这里还有一个不使用任何apache commons的库。

您需要一个处理SSL的库。正如John Ellinwood所指出的,一些框架(如Java 2 SE)提供了这些内置的,而其他框架则需要使用第三方库

C开发人员通常直接使用OpenSSL,但不能说是简单的,而使用C++时,有几个容易陷入的“GOCHAs”。


<>我建议您使用一个支持SSL的C++网络库,例如Qt的网络库,或者POCO NetSSL。有关API文档的一些教程文档,请参阅-您可能想看看哪个直接获取PEM文件。

Duplicate;我认为问题的另一个版本更能提供信息。。不错的答案——但他实际上询问了C++,而不是java。实际上,他把java和jk标记为java密钥存储。他想连接到远程服务器,这将使用SSL套接字完成。另一方面C++与连接机制不太相关。