在浏览器中访问https是件挺方便的事,与访问http站点相比,也就是地址栏上多个“s”。但是,在java平台上访问https,就有点多。Java虚拟机并不直接使用操作系统的key ring,而是有自己的security manager。与操作系统类似,jdk的security manager默认有一堆的根证书信任。如果你的https站点证书是花钱申请的,被这些根证书所信任,那使用java来访问此https站点会非常方便。但假如,你的https证书是自己签名的,就需要将证书导入至JDK的信任证书中,否则访问时会报SSL错误。假如,你的webserice是基于https来进行访问,而此站点证书是自签名类型的,那么部署时一定要使用keytool进行证书导入,否则无法正常访问。
首先手动导入自己的证书:
先看证书大概位置:
上面是找位置,下面比较重要:
第一步确定位置:
第二步移动我的证书到上面确定位置,并且修改名字为bshcert.cer:
sudo mv ils-test.hcf-bshg.com.cer /usr/java/jdk/jre/lib/security/bshcert.cer
第三步就是导入命令:
sudo keytool -import -noprompt -trustcacerts -alias bshcert -keystore ${JAVA_HOME}/jre/lib/security/cacerts -file ${JAVA_HOME}/jre/lib/security/bshcert.cer
密码一般默认第一个先测试:changeit
第二个测试密码:changeme
我用第一个就成功了
查看是否成功如果显示你导入的密码就说明成功了:
keytool -list -keystore ${JAVA_HOME}/jre/lib/security/cacerts -alias bshcert
其中:
-alias 指定别名(推荐和证书同名)
-keystore 指定存储文件(此处固定)
-file 指定证书文件全路径(证书文件所在的目录)
注意:当切换到 cacerts 文件所在的目录时,才可指定 -keystore cacerts, 否则应该指定全路径;
此时命令行会提示你输入cacerts证书库的密码,敲入changeit即可,这是java中cacerts证书库的默认密码,当然也可自行修改
####指导qq:179061434