2017-02-25 72 views
0

我有一个.cer自签名证书,使用它我需要向JAVA中的Webservice发出GET/POST请求。我对这个概念完全陌生。我已经搜索了很多关于如何做到这一点,但没有任何帮助。虽然这样做,我遇到了java密钥库&信任库&我想这可以用来完成我的任务。有人能够帮助我理解Java Keystore的工作原理。请建议是否有其他方式来做到这一点。任何形式的帮助表示赞赏。提前致谢。需要使用.cer证书执行GET&POST HTTPS请求

+1

http://stackoverflow.com/questions/1666052/java-https- client-certificate-authentication?noredirect = 1&lq = 1 – 2017-02-25 14:37:09

+0

https://www.mkyong.com/java/java-https-client-httpsurlconnection-example/ – 2017-02-25 14:38:05

+0

http://stackoverflow.com/questions/10968708/java-simple -get-request-using-ssl-certificate-and-https – 2017-02-25 14:38:38

回答

0

基本上,密钥库是“放置”(通常是文件),您可以在其中放置数字证书及其相应的私钥(只有在您是证书所有者时才会拥有私钥) - 这是一个简化解释,但我认为现在已经足够了)

当您获取/发布到https URL时,这意味着您正在访问的服务器拥有自己的数字证书。要成功访问它,您需要信任该证书。在Java中,您可以通过创建一个包含证书和相应链的密钥库来实现这一点(每个证书都由另一个拥有证书的实体签名,或者是自签名的),因此您可以获得签名的证书,签名人等等,直到你得到一个自签名的证书,并且所有这些证书都是链 - 你需要把所有的链证书放在密钥库中) 这个特定的密钥库被称为信任库(包含所有可信证书)。

您拥有的自签名证书是服务的证书吗?如果是这样,只需创建一个密钥存储并将其设置为您的信任存储。

如何创建一个密钥:https://docs.oracle.com/cd/E19509-01/820-3503/ggfen/index.html(或搜索密钥库类的实例)

如何设置信任库:java SSL and cert keystore

+0

非常感谢您提供的信息丰富的答案。我拥有的证书用于客户端身份验证。许多客户会打电话给web服务,并且在他们这样做时应该自己进行身份验证。因此,在这种情况下,我应该如何添加我的证书以便通信成功,并且我从webservice获得响应 – Kavitha

+0

客户端证书必须位于不同的密钥存储区中并设置在另一个属性中(请参阅http://stackoverflow.com/questions/5871279/java-ssl-and-cert-keystore/5871352#5871352,它是javax.net.ssl.keyStore和javax.net.ssl.keyStorePassword)。但是你也需要私钥,否则客户端认证不会工作 – 2017-02-26 09:57:16

+0

再次。我现在明白的是,我只有公钥和证书(格式为.cer)。我没有拥有证书。我工作的公司给了它。但是,当我使用这个.cer文件手动调用webservice时,我可以访问它。将导入的证书导入到Chrome的个人存储中,并使用Postman扩展发送请求。客户端身份验证如何在没有私钥的情况下工作?你的答复我需要私钥在java.I自动化将不得不从业主问。我相信我会得到它,但那是不正确的做法。请提出一些建议! – Kavitha