我希望我能就今天遇到的问题得到一些帮助:
我正在尝试使用其中一个客户端的服务器对客户端进行身份验证,我可以通过发出以下命令来进行身份验证:
curl -v -k -H“ Content-Type:application / json” –key privkey.pem –cert pub.cer –data @ search.json https:// ….
从上面的命令可以看出,我有以下几点:
>公开证书
>私钥
>密钥库
现在,我试图在Java中做同样的事情,但是我不知道如何完成它.我阅读的所有指南都告诉我应该使用我拥有的密钥库.但是在遵循这些指南时,我遇到了障碍.
我可以帮助或指出某个方向,我将不胜感激.
提前致谢,
彼得
解决方法:
听起来您需要使用HTTPS URL连接来连接需要客户端身份验证的服务器.您需要做两件事才能从自己所在的位置到达那里.
首先,您需要根据私钥和公共证书创建Java样式的密钥库.有关此问题的答案,请参见详细说明:
您还需要将服务器的证书导入密钥库.
其次,您需要编写Java代码才能使用新创建的密钥库.为此,请使用密钥库创建一个SSLContext,然后将HTTPS URL连接设置为使用来自此上下文的套接字工厂-类似以下内容:
SSLContext sslContext
= SSLConnections.getSSLContext(keyStoreFile, keyStoreFilePassword);
httpsURLConnection.setSSLSocketFactory(sslContext.getSocketFactory());
这应该在创建HttpsURLConnection之后但在连接之前完成-也就是说,在您对其进行读取或写入之前,或对其进行调用connect()之前.
标签:ssl,java
来源: https://codeday.me/bug/20191121/2055137.html