我说下我的整个过程,看看在哪里还是有错。
1.生成CA证书。目前不使用第三方权威机构的CA来认证,自己充当CA的角色。
1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out root/root-key.pem 1024
2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out root/root-req.csr -key root/root-key.pem
3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in
root/root-req.csr -out root/root-cert.pem -signkey root/root-key.pem
-days 3650
4.将证书导出成浏览器支持的.p12格式(导出密码123456):C:\OpenSSL\apps>openssl
pkcs12 -export -clcerts -in root/root-cert.pem -inkey root/root-key.pem
-out root/root.p12
2.生成server证书。
1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out server/server-key.pem 1024
2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out server/server-req.csr -key server/server-key.pem
3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in
server/server-req.csr -out server/server-cert.pem -signkey
server/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem
-CAcreateserial -days 3650
4.将证书导出成浏览器支持的.p12格式 (导出密码123456):C:\OpenSSL\apps>openssl
pkcs12 -export -clcerts -in server/server-cert.pem -inkey
server/server-key.pem -out server/server.p12
3.生成client证书。
1.创建私钥 :C:\OpenSSL\apps>openssl genrsa -out client/client-key.pem 1024
2.创建证书请求 :C:\OpenSSL\apps>openssl req -new -out client/client-req.csr -key client/client-key.pem
3.自签署证书 :C:\OpenSSL\apps>openssl x509 -req -in
client/client-req.csr -out client/client-cert.pem -signkey
client/client-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem
-CAcreateserial -days 3650
4.将证书导出成浏览器支持的.p12格式(导出密码123456):C:\OpenSSL\apps>openssl
pkcs12 -export -clcerts -in client/client-cert.pem -inkey
client/client-key.pem -out client/client.p12
4.根据root证书生成jks文件
C:\OpenSSL\apps\keytool -import -v -trustcacerts -storepass ximencf -alias root -file root/root-cert.pem -keystore root.jks
sslenabled="true" maxhttpheadersize="8192" maxthreads="150"
minsparethreads="25" maxsparethreads="75" enablelookups="false"
disableuploadtimeout="true" acceptcount="100" sslprotocol="TLS"
clientauth="true" keystorefile="server.p12"
keystoretype="PKCS12" keystorepass="123456" truststorefile="root.jks"
truststoretype="JKS" truststorepass="123456"/>
root.p12,client.p12分别导入到IE中
这样子,在启动tomcat的时候就会报invlidate keystore format错误,即认为keystore的类型是不正确,我已经指定了其为PKCS12类型的啊,同时,我也希望实现双向认证。
你的过程基本上没有问题,虽然有些地方不是必要的。但是本来应该成功的。你之所以没有成功,应该有以下几点你需要注意的:
1. 第一个问题,
引用
4.根据root证书生成jks文件
C:\OpenSSL\apps\keytool -import -v -trustcacerts -storepass ximencf -alias root -file root/root-cert.pem -keystore root.jks
你这里生成jks时用的storepass口令是ximencf, 而且配置tomcat的时候,你用的是什么?是123456。
2.
xml文件是区分大小写的,你写在server.xml里的内容有些是通过MBean赋值到tomcat的javabean里的,如果你大小写搞错了,他
也无法认识。举例:如keystoreFile如果你写成keystorefile,
tomcat就不知道这个文件在哪里,因为你指定的文件路径并没有通过MBean赋值到Tomcat里的javabean。当然,这很有可能是你的拷贝的
时候或者javaeye的editor的问题,我只是说一下,防止以后还有人犯这样的错误。
3. 最后一点就是文件的路径,如果像你那样没有指定路径的话,tomcat会到根目录下去找文件,如果文件不是放在根目录下,也是找不到的。
希望你这次成功。
阅读(1989) | 评论(0) | 转发(0) |