开发者社区> 问答> 正文

同一个java web客户端需要访问两个以上不同的https形式的url时,如何设置客户端证书?

落地花开啦 2016-06-02 10:32:16 1158

单台服务器要访问多个不同的https的时候,怎么办,例如A站点的证书是CertA,密码PasswdA
B站点的证书是CetB,密码为PasswdB,这个时候怎么调用,因为测试发现设置System.setProperty("javax.net.ssl.XXX")只有在第一次设置有效,之后无论怎么重新设置都会使用第一次的证书,现在问题会导致不同的HTTPS接口访问冲突,请问大神们,有什么解决办法吗?
网上查了下,说是用动态管理证书,不是很会,向大神们,请教!

Java 数据安全/隐私保护
分享到
取消 提交回答
全部回答(3)
  • 一生有你llx
    2019-07-17 19:24:10

    把这2个证书 import 到 JVM默认的 keystore中 即cacert中
    {JAVA_HOME}/jre/lib/security/cacerts. 理论上来说java 虚拟机会默认加载这个cacert的只要运行在这个jvm的应用程序 都会在这个key store 里面寻找可trust的证书,也就不用再代码里显示的声明 加载什么什么证书了。
    当然了 如果不放心 可以加上
    System.setProperty("javax.net.ssl.trustStore"," C:/Program Files/Java/jdk1.6.0_20/jre/lib/security/cacerts" );
    注: 这个 cacert的默认密码是changeit

    0 0
  • nothingfinal
    2019-07-17 19:24:10

    把这2个证书 import 到 JVM默认的 keystore中 即cacert中
    {JAVA_HOME}/jre/lib/security/cacerts. 理论上来说java 虚拟机会默认加载这个cacert的只要运行在这个jvm的应用程序 都会在这个key store 里面寻找可trust的证书,也就不用再代码里显示的声明 加载什么什么证书了。
    当然了 如果不放心 可以加上
    System.setProperty("javax.net.ssl.trustStore"," C:/Program Files/Java/jdk1.6.0_20/jre/lib/security/cacerts" );
    注: 这个 cacert的默认密码是changeit

    0 0
  • 落地花开啦
    2019-07-17 19:24:10

    把这2个证书 import 到 JVM默认的 keystore中 即cacert中
    {JAVA_HOME}/jre/lib/security/cacerts. 理论上来说java 虚拟机会默认加载这个cacert的只要运行在这个jvm的应用程序 都会在这个key store 里面寻找可trust的证书,也就不用再代码里显示的声明 加载什么什么证书了。
    当然了 如果不放心 可以加上
    System.setProperty("javax.net.ssl.trustStore"," C:/Program Files/Java/jdk1.6.0_20/jre/lib/security/cacerts" );
    注: 这个 cacert的默认密码是changeit

    0 0
添加回答
+ 订阅

云安全开发者的大本营

推荐文章
相似问题