栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何编写使用相互ssl身份验证的Java客户端和服务器应用程序?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何编写使用相互ssl身份验证的Java客户端和服务器应用程序?

在花了很长时间使这项工作完成之后,解决方案如下:
首先,当使用设置属性时,

System.put("key", "value")
我注意到经过多次尝试后,它没有设置
KeyStore

没有出现在ssl日志中 ,还尝试将属性设置为使用
-Djavax.net.ssl.keyStore=""
此功能的tomcat配置中的参数也不起作用。
所以我
KeyStore
从这样的阅读
InputStream

    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());    FileInputStream io = new FileInputStream("path/to/jks/file.jks");    try{        keystore.load(io, "pass".toCharArray());    } finally {        io.close();    }

并使用相同的先前代码读取

TrustStore
如下内容:

    KeyStore trustStore= KeyStore.getInstance(KeyStore.getDefaultType());    FileInputStream stream = new FileInputStream("path/to/truststore/file.jks");    try{        keystore.load(stream, "trusted".toCharArray());    } finally {        stream.close();    }

之后定义

SSLContext

SSLContext sslcontext = SSLContexts.custom() .loadKeyMaterial(keystore, "keyPassword".toCharArray()) .loadTrustMaterial(truststore, new TrustSelfSignedStrategy()) .build();

loadKeyMaterial
用来加载
keyStore
它,它以您的privateKey的密码
"keyPassword"
作为参数,因此您必须使用密码来保护私钥,当我尝试使用未使用密码加密“受保护”的普通私钥时,出现异常:
java.security.UnrecoverableKeyException:Cannot recover key
,默认情况下,它与密钥库密码相同,除非您对其进行了更改。
然后创建
SSLConnectionSocketFactory
并将其作为参数传递给
HttpClient
..这对我有用:)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/422085.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号