读书人

AD的SSL证件

发布时间: 2012-12-23 11:28:15 作者: rapoo

AD的SSL证书
系统中以前做的一个修改AD上用户的密码的程序出了问题,查了一下发现异常是证书过期,这个证书是从AD服务器上的一个证书服务下载来的。
于是联系管理员重新到AD上申请了一个新的证书,像以前一样通过JDK的keytool导入到keystore文件中。再执行单元测试代码,却出了另一个异常:

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


不明白啊,于是拜托google大神,在这篇文章里找到了方法http://blogs.sun.com/andreas/entry/no_more_unable_to_find,通过上面的程序生成keystore文件,这回就好使了。
还是不明白为什么啊,通过keytool比较两个keystore文件,仅发现可疑的有一个地方
ExtendedKeyUsages [  clientAuth  serverAuth]


ExtendedKeyUsages [  1.3.6.1.4.1.311.10.3.4  emailProtection  clientAuth]



为什么从服务器申请的证书,用keytool执行就没有serverAuth呢,怀疑是参数没设对。再拜托google,又在这里找到了答案http://blogs.sun.com/wangwj/entry/keytool_enhancements
原来-ext eku=sa,ca参数只是在JDK7里才加上了,而我用的却是JDK6,suodiesinie

这里再记录下两个个keytool命令
导入证书
keytool -importcert -v -trustcacerts -keystore "e:\\cacerts" -alias mkey -file "e:\\certnew.cer"

查看信息
keytool -list -v "e:\\cacerts"


还有一个不明白的问题是最开始的证书过期异常。在keystore里看到的Validity明明没有超出这个期限,似乎不是这个日期的限制
有效期: Wed Jan 27 13:50:40 CST 2010 至Thu Jan 27 13:50:40 CST 2011

读书人网 >编程

热点推荐