1创建证书
啰嗦几句:证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;本教程由于是演示所以就自己用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供商去购买。
记住 cmd一定要用管理员运行
第一步:用JDK自带的keytool工具生成证书:
cmd命令:
keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/chlkey
您的名字与姓氏这里写域名或者lcoalhost
然后配置tomcat的server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystorefile="D:keyschlkey" keystorepass="changeit"/>
此时启动tomcat会报错 如下 发生的原因是 即使配置了 keystorefile ,C盘下也还需要一个 .keystore 文件
严重:
Failed to load keystore type JKS with path C:UsersHONGLINCHEN/.keystore
due to Illegal character in opaque part at index 2: C:UsersHONGLINCHEN/.keystore
java.lang.IllegalArgumentException: Illegal character in opaque part at index 2:
C:UsersHONGLINCHEN/.keystore
解觉错误 看第二步
第二步:
cmd命令 keytool -genkey -alias wsria -keyalg RSA
wsria 是上一个命令中的别名
如要输入密码:输入:
changeit
剩下的就填填就好了(有建议说名子和姓氏不要用 IP ,要用域名),完成后 C:Documents and SettingsAdministrator 下面就会生成
.keystore 文件。
此时 已经可以访问了 不过请继续往下面看:
第三步、导出crt证书
keytool -export -file d:/keys/chl.crt -alias wsria -keystore d:/keys/chlkey
特别提示:如果提示:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
那么请输入密码:changeit
至此导出证书完成,可以分发给应用的JDK使用了
第四步为客户端的JVM导入证书(其实不导入这个也可以,只要上面1,2步就可以https访问) 这一步一定要用管理员cmd运行 否则会报错 拒绝访问 因为jdk在c盘
导入jdk 库中
keytool -import -keystore "C:Program FilesJavajdk1.8.0_131jrelibsecuritycacerts" -file D:/keys/chl.crt -alias wsria
注意jdk的位置 是jdk下面的jre 下面的lib 后面wsria是刚刚第一步起的别名 成功如下
然后就是不需要了 就可以删除这个证书了 删除命令是:
删除证书
keytool -delete -alias wsria -keystore "C:Program FilesJavajdk1.8.0_131jrelibsecuritycacerts" -storepass changeit
changeit是上面设置的密码
tomcat启用SSL 443端口是默认端口 访问不用带端口号类似于https://www.sincerain.com/
如果用的是8443则需要这样https://www.sincerain.com:8443
如果tomcat设置是443启动报443端口已被占用,可以查找进程
netstat -ano 列出所有端口情况。
netstat -aon|findstr "443" 查看443端口。
找到443端口对应的应用程序pid为15964
然后
tasklist|findstr "15964"
taskkill /f /t /im VisualSVNServer.exe 杀掉重启tomcat就可以了