TOMCAT建立SSL连接单向认证
在TOMCAT下创建HTTPS项目的方法 和用JAVA签发数字证书 中说了怎么用TOMCAT建立HTTPS项目(单项认证)和怎么自己签发数字证书。下面总结下过程,经过我的测试,是没问题的。
1.建立单项认证。
--命令如下:
打开cmd
输入d:
输入md keys
输入cd keys
创建CA证书库(**对)
keytool -genkey -dname "CN=ca, OU=NC, O=Shanghai University, L=ZB, ST=Shanghai,C=CN" -alias caserver -keyalg RSA -keystore ca.keystore -keypass happy123 -storepass happy123 -validity 1000
创建证书库(**对)
keytool -genkey -dname "CN=localhost, OU=NC, O=Shanghai University, L=ZB, ST=Shanghai,C=CN" -alias server -keyalg RSA -keystore server.keystore -keypass happy321 -storepass happy321 -validity 1000
注意 : 这里 CN=localhost ,这里的localhost是需要证书的域名,不能是IP
导出CA证书
keytool -export -trustcacerts -alias caserver -file ca.cer -keystore ca.keystore -storepass happy123
导出证书
keytool -export -trustcacerts -alias server -file server.cer -keystore server.keystore -storepass happy321
查看**库
keytool -list -v -keystore server.keystore -storepass happy321
双击ca.cer,安装CA证书后,使用CA证书签名证书(JAVA代码实现,见其他文章)
导入签名后证书
要注意导入证书的顺序,要先导入CA证书,如果先导入认证后的证书,会出现这样的错误:
先倒入CA证书
keytool -import -alias ca -keystore D:\keys\server.keystore -trustcacerts -file D:\keys\ca.cer -storepass happy321
注意 -alias 不要和之前的重复
keytool -import -alias server -keystore D:\keys\server.keystore -trustcacerts -file D:\keys\serverSignKey.cer -storepass happy321
注意 -alias 要和之前那个一样
导入好后查看证书库,会出现如下的情况
如图:
配置tomcat 的server.xml文件,重启tomcat(注意tomcat版本不同,可能配置会有点不同)
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" enableLookups="true" disableUploadTimeout="true" acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" sslProtocol="TLS" clientAuth="false" keystoreFile="D:\keys\server.keystore" keystorePass="happy321" />
再次提醒,如果是用ECLIPSE中建的服务器,注意删除了新建个服务器。