openssl配置tomcat8.5的双向认证的问题

openssl方面根证书等全部建好,并且在IIS上可以顺利实现双向认证,现在我想将这一套证书运用到tomcat上,单项认证很轻松就搞定了,但是到了双向认证就掉入了无底坑,在网上搜了各种方法,都一一实践不止3次,但没有一次能够通过,在这里向大神们请教一下。
先介绍一下我的环境:
tomcat8.5.5
openssl1.0.2j
JDK8.0_73;

就拿http://szlxh002.iteye.com/blog/2277307上面的做法做一遍,那么就会报java.lang.Exception: cannot create new ssl的错误。

之后我又用keytool实现了一遍,幸好keytool的证书可以完成双向认证,让我工作上勉强可以应付过去,但我自己将openssl生成的server.p12装换为.keystore格式后,再放到tomcat中时,上面的错又出现了,我不死心,又去看了一遍官方的说明文档,根据官方的说明问道再配置一番之后,上面的错误不报了,除了新错误,java.lang.IllegalArgumentException:java.io.IOException:DerInpurtStream.getLength():lengthTag=109,too big.

也就是说我传入的参数超长了,网上说我的私钥超长了,可是我对比了一下keytool生成可以用的.keystore文件,它的私钥也是2048和我.p12的一样长,这就让我很不明白了,看看诸位能不能帮我看看问题出在哪里。拜谢

2个回答

额,每次都这样,提问没多久自己就搞通了,郁闷也开心,解决方法很简单,如同我参照官网的配置文件,我在重新生成的一遍后,发现错误提示变了,变成初始化SLL context 失败(之前是因为对同一套证书做了太多不同方式的操作导致证书已经有些损坏或者本就不是一套了,这里记个教训,不要把证书名都起一样。。。)。
然后我就找出现这个错误的原因,看到一个前辈的博文里写道,在Windows环境下,服务端.keystore的alias 也就是别名一定要是tomcat,否则就会报错,我马上试了一些,结果就通了。麻蛋,这是什么鬼,Windows这么被鄙视。。。。。

这里补充一下,报参数超长错误的SERVER.XML配置
sslImplementationName ="org.apache.tomcat.util.net.openssl.OpenSSLImplementation"
maxTreads ="150" SSLEnabled ="true"
scheme ="https" secure ="true"
clientAuth = "true" sslProtocol ="TLS"
keystoreFile = "conf/server.p12"
keystorePass = "123456"
keystoreType = "PKCS12"
truststoreFile = "conf/truststore.keystore" //这里是根据根证书生成的信任证书库,并且我将客户证书也导入了
truststorePass = "123456"
truststoreType = "JKS"/>

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问