`

程序获取访问目标主机有效SSL/TLS证书

 
阅读更多

现在,很多网站或者服务,都实现成基于SSL,并且提供证书下载安装才能访问。如果它能提供下载,当然什么问题有没有。

可是,如果你无权下载,并且它不是CA证书,只是自签名的Server端证书。只知道Added certificate to keystore ‘jssecacerts’ using alias ‘goauth.baoxan.net-1′它的端口和地址,你强行通过程序访问,可能会得到这样的错误:

1
2
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
        at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)

没想到,Sun提供了一个工具程序,能够能过程序调用,得到Server端的证书。

工具类在googlecode源码地址为:InstallCert.java

在IDE里面运行,或者控制台进入class文件目录后:

java TestFetchingCert goauth.baoxan.net

选中你需要保存的那个证书序号,比如1,会自动生成certificate,包括他的alias:

Added certificate to keystore ‘jssecacerts’ using alias ‘goauth.baoxan.net-1′

然后把这个证书导成可见文本:(密码是默认的changeit)

keytool -export -alias goauth.baoxan.net-1 -keystore jssecacerts -rfc -file goauth.crt

进入jre的security目录,把它导入java可信任库(%JAVA_HOME%/jre/lib/security/cacerts):

cd /d C:\Program Files\Java\jdk1.6.0_24\jre\lib\security

keytool -import -alias goauthCA -file goauth.crt -keystore “%JAVA_HOME%/jre/lib/security/cacerts”

默认密码还是changeit

一切搞定,可以再java中访问这个goauth.baoxan.net的SSL服务了,比如单点登录的时候。

 

本人博客已搬家,新地址为:http://yidao620c.github.io/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics