版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jadyer/article/details/47065925
完整版见https://jadyer.github.io/2012/05/30/tomcat-https/
/**
* @see CAS服务端配置HTTPS
* @see ------------------------------------------------------------------------------------------------------------------------
* @see 1.生成KeyStore
* @see 1.1.D:\>keytool -genkey -alias XuanyuKeyStore -keyalg RSA -validity 1024 -keystore D:/keys/XuanyuKey
* @see -genkey 表示生成密钥
* @see -alias 指定别名,这里是XuanyuKeyStore
* @see -keyalg 指定算法,这里是RSA
* @see -validity 指定证书有效期,这里是1024天
* @see -keystore 指定生成的KeyStore文件名和路径,这里是D:/keys/XuanyuKey
* @see 1.2.CMD输出-->输入密钥库口令:xuanyu75(以前叫做'输入keystore密码')
* @see 再次输入新密码:xuanyu75
* @see 您的名字与姓氏是什么?[Unknown]:sso.jadyer.com(单点服务器域名:要根据实际情况填写域名,否则会导致证书上的名称无效)
* @see 您的组织单位名称是什么?[Unknown]:http://blog.csdn.net/jadyer
* @see 您的组织名称是什么?[Unknown]:JavaLover_Jadyer
* @see 您所在的城市或区域名称是什么?[Unknown]:重庆
* @see 您所在的州或省份名称是什么?[Unknown]:江北区
* @see 该单位的两字母国家代码是什么[Unknown]:ZH
* @see CN=sso.jadyer.com, OU=http://blog.csdn.net/jadyer, O=JavaLover_Jadyer, L=重庆,ST=江北区,C=ZH 正确吗?[否]:y
* @see 输入<XuanyuKeyStore>的主密码(如果和 keystore 密码相同,按回车):这里按回车键
* @see (这里的主密码一定要与keystore密码相同,否则启动Tomcat时就会告诉你java.io.IOException: Cannot recover key)
* @see 1.3.接下来生成了D:/keys/XuanyuKey文件
* @see ------------------------------------------------------------------------------------------------------------------------
* @see 2.导出证书
* @see 2.1.D:\>keytool -export -file D:/keys/Xuanyu.crt -alias XuanyuKeyStore -keystore D:/keys/XuanyuKey
* @see -alias需要输入生成KeyStore时用的别名,否则会提示'keytool 错误: java.lang.Exception: 别名 <XuanyuCRT> 不存在'
* @see 输入密钥库口令应输入生成KeyStore时设置的口令
* @see 导入成功后控制台会打印'存储在文件 <D:/keys/Xuanyu.crt> 中的证书'
* @see 2.2.当浏览器访问单点客户端时,首次会跳到CAS服务端登录页面,这时浏览器会先询问用户,这是一个未知SSL的请求,是否继续
* @see 如果把CRT证书导入到浏览器中,就不会看到这个询问页面了,下面是导入CRT到浏览器的步骤
* @see 双击Xuanyu.crt-->安装证书-->下一步-->将所有的证书放入下列存储-->浏览-->受信任的根证书颁发机构-->下一步-->完成
* @see 这时会弹出对话框'您即将从一个声称代表如下的证书颁发机构安装证书:sso.jadyer.com......确认安装此证书吗'-->是-->导入成功-->确定
* @see ------------------------------------------------------------------------------------------------------------------------
* @see 3.导入证书到JVM
* @see 3.1.D:\>keytool -import -keystore D:\Develop\Java\jdk1.7.0_76\jre\lib\security\cacerts -file D:/keys/Xuanyu.crt -alias XuanyuKeyStore
* @see 输入密钥库口令:xuanyu75
* @see 所有者: CN=sso.jadyer.com, OU=http://blog.csdn.net/jadyer, O=JavaLover_Jadyer, L=重庆, ST=江北区, C=ZH
* @see 发布者: CN=sso.jadyer.com, OU=http://blog.csdn.net/jadyer, O=JavaLover_Jadyer, L=重庆, ST=江北区, C=ZH
* @see 序列号: 5149ee5a
* @see 有效期开始日期: Fri Jul 24 15:21:24 CST 2015, 截止日期: Sun May 13 15:21:24 CST 2018
* @see 证书指纹:
* @see MD5: 84:E1:92:ED:71:49:D4:D5:94:CB:AB:35:BB:01:81:0B
* @see SHA1: A0:1E:BD:CE:8B:DB:F3:7E:2C:ED:7A:9A:5D:72:41:3C:1D:28:D1:2A
* @see SHA256: B2:90:99:8D:29:BA:87:48:AE:3A:D8:E2:AD:8E:9E:F3:1B:95:FF:65:29:
* @see 48:BD:EB:C4:29:14:9E:69:86:B1:D6
* @see 签名算法名称: SHA256withRSA
* @see 版本: 3
* @see
* @see 扩展:
* @see
* @see #1: ObjectId: 2.5.29.14 Criticality=false
* @see SubjectKeyIdentifier [
* @see KeyIdentifier [
* @see 0000: 9C 46 74 89 5B AA 10 52 24 4C 7B F3 49 66 CD 81 .Ft.[..R$L..If..
* @see 0010: F4 A9 E5 22 ..."
* @see ]
* @see ]
* @see
* @see 是否信任此证书? [否]: y
* @see 证书已添加到密钥库中
* @see 注意在输入密钥口令后若提示'keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect'
* @see 那就换个密码,输入'changeit'就行了
* @see ------------------------------------------------------------------------------------------------------------------------
* @see 4.应用证书到Tomcat-8.0.21
* @see 4.1.拷贝生成的D:/keys/XuanyuKey到\\%TOMCAT_HOME%\\conf\\目录中(其它目录也可以)
* @see 4.2.server.xml
* @see <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
* @see maxThreads="150" scheme="https" secure="true"
* @see clientAuth="false" sslProtocol="TLS" URIEncoding="UTF-8"
* @see keystoreFile="conf/XuanyuKey" keystorePass="xuanyu75"/>
* @see 4.3.浏览器访问https://127.0.0.1:8443/blog会发现你的应用已经处于SSL安全通道中了
* @see 4.4.但此时访问http://127.0.0.1:8080/blog会发现也能访问
* @see 也就是说,我们虽然启用了HTTPS,但现在还可以绕开HTTPS直接HTTP访问,如此HTTPS也就起不到作用了
* @see 修改\\%TOMCAT_HOME%\\conf\\web.xml文件,尾部<welcome-file-list>标签后加入下面的内容即可
* @see <security-constraint>
* @see <!-- Authorization setting for SSL -->
* @see <web-resource-collection>
* @see <web-resource-name>SSL_App</web-resource-name>
* @see <!-- 指明需要SSL的url -->
* @see <url-pattern>/*</url-pattern>
* @see <http-method>GET</http-method>
* @see <http-method>POST</http-method>
* @see </web-resource-collection>
* @see <user-data-constraint>
* @see <!-- 指明需要SSL -->
* @see <transport-guarantee>CONFIDENTIAL</transport-guarantee>
* @see </user-data-constraint>
* @see </security-constraint>
* @see ------------------------------------------------------------------------------------------------------------------------
* @see 你也可以申请免费的StartSSL CA证书: StartSSL(公司名:StartCom)也是一家CA机构
* @see 它的根证书很久之前就被一些具有开源背景的浏览器支持(Firefox/Chrome/Safari等)
* @see 申请地址:http://www.startssl.com
* @see 申请参考:http://www.linuxidc.com/Linux/2011-11/47478.htm
* @see ------------------------------------------------------------------------------------------------------------------------
* @create 2015-7-26 上午10:32:25
* @author 玄玉<http://blog.csdn.net/jadyer>
*/