【发布时间】:2013-12-21 19:28:32
【问题描述】:
我建立了一个可以获取 http 请求并发送响应的服务器。此外,我想使用客户端程序通过https协议发送http请求。
我生成一个PEM证书文件,格式如下:
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
当我尝试使用指令将证书导入 JVM 时:
keytool -import -file E:\server.pem -alias CERT -keystore "C:\Program Files\Java\jre7\lib\security\cacerts"
它有一个错误:
java.lang.Exception: Input not an X.509 certificate
我搜索了异常,发现原因可能是 keytool 只能接受 BEGIN CERTIFICATE 和 END CERTIFICATE 之间的 PEM 格式。
所以我使用openSSL将PEM转换为DER,然后可以将它导入JVM。
我的问题是为什么我必须将带有私钥的证书导入到我的 JVM?在 SSLHandshake 的过程中,不应该将公钥证书导入到我的 JVM 中吗?
我知道这可能是一个非常基本的问题,但我无法完全理解它是如何工作的。
非常感谢:)
【问题讨论】:
标签: java ssl openssl certificate ssl-certificate