SSL 连接的 context 目前用那个 KeyManager, TrustManager 的实现(Sun 公司提供的)都是默认地从命令行提供的参数或代码中明确初始化的 trust manager / key manager 中查找的,这里面可以肯定的是这个参数在连接建立之前已经固定了的静态形式,这要求我们把可以信任的服务器证书的颁发机构的根证书先导入到 trust store 中然后指派给 java 程序。
因此当我们的服务器使用了一张不在 trust store 中的信任根证书机构名录中的证书是不会被信任的,因此我们必须提供一个有别于 Sun 的 Trust Manager 接口的实现类,然后像 IE 浏览器那样在查找证书来确认是否信任时d出一个对话框出来让用户检查,当用户点击“以后一直信任该证书的厂商”时我们把它缓存在持久性介质(比如文件或数据库)中,下次访问时先看是否有缓存的,没有再来d对话框让用户确认,当服务器要求客户端出示客户端证书时(比如网银业务)我们同样需要提供自己的 key manager 实现。
JAVA怎样调用>
输入<Server>的主密码
(如果和 keystore 密码相同,按回车):
以上命令执行完成后,将获得一个名为serverkeystore的密匙库。
生成客户端的信任库。首先输出RSA证书:
keytool -export -alias Server -file test_axiscer -storepass strongit-keystore serverkeystore
然后把RSA证书输入到一个新的信任库文件中。这个信任库被客户端使用,被用来验证服务器端的身份。
keytool -import -file test_axiscer -storepass changeit -keystore clienttruststore -alias serverkey -noprompt
以上命令执行完成后,将获得一个名为clienttruststore的信任库。
同理生成客户端的密匙库clientkeystore和服务器端的信任库servertruststore方便起见给出bat文件
gen-cer-storebat内容如下:
更改Tomcat的配置文件(serverxml),增加以下部署描述符:(其实里面有,只是被注释掉了)
1 <Connector port="8440"
2 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
3 enableLookups="false" disableUploadTimeout="true"
4 acceptCount="100" scheme=">
以上就是关于Java的HttpClient如何去支持无证书访问https全部的内容,包括:Java的HttpClient如何去支持无证书访问https、如何在java中发起http和https请求、JAVA怎样调用https类型的webservice等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)