1. 制作证书
1.1. 使用keytool工具创建证书文件
keytool -genkey -alias tomcat -keyalg RSA-keysize 2048 -validity 36500 -keystore test.jks -file test.csr -ext SAN=dns:sso.test.com,dns:rest.test.com
该证书文件test.jks,包含一对公钥和私钥信息,供服务端使用;
参数说明
genkey:或者genkeypair,生成秘钥对;
alias:别名;
keyalg:秘钥算法名称;
keyalg:秘钥算法名称;
keysize:秘钥位长度,1024位不安全,建议2048位;
validity:有效期,单位是天;
keystore:可以是jks、keystore等后缀格式;
SAN后面,可以携带多个域名,即制作多域名证书;// TODO
输入以下信息:(秘钥库口令设置的是”tomcat”)
1.2. 导出公钥文件
keytool -export-alias tomcat -keystore test.jks -storepass tomcat -file test.cer
该文件test.cer,只包含对应的公钥信息,供客户端使用,比如浏览器;
2. 在服务端配置证书
2.1. 配置步骤
在Tomcat服务器上配置证书;
1、 打开文件/conf/server.xml;
2、 去掉HTTP端口配置信息;
3、 添加HTTPS配置信息;
注意:
在一台服务器上,启动多个Tomcat服务时,shutdown端口要配置成不一样的;
2.2. 其他问题
2.2.1. PC前端跨域共享cookie数据
Tomcat服务器部署http协议时,跨域共享cookie数据,使用的是如下方法,cookie中包含token信息:
Tomcat服务器部署https协议是,之前的跨域共享cookie数据失效;
解决方法:
在js代码中,添加如下代码,都使用主域名test.com,cookie数据就可以共享了;
document.domain = "test.com";
3. 在客户端安装证书
3.1. Windows系统安装证书
1、 双击test.cer,点击安装证书,进行安装;
2、 选择“将所有的证书放入下列存储”,存储在“受信任的根证书颁发机构”;
3、 弹出安全性警告,选择是,安装成功;
4、 如果想删除系统证书,
在windows7上,win + r,输入certmgr.msc,可以删除已经安装的证书;
说明:
Windows系统上,证书安装到系统中后,常见的浏览器,比如:IE,360,QQ等,打开页面时,会默认到系统证书中查找,如果找到,就直接使用,否则,会弹出安全警告;
经测试,Windows 7系统上安装证书后,可以直接正常访问https页面的浏览器如下:
(注意:先安装系统证书,再重启浏览器,打开登录界面)
1、 IE;
2、 Chrome;
3、 360安全浏览器;
4、 QQ浏览器;
5、 搜狗浏览器;
6、 遨游浏览器;
7、 百度浏览器;
8、 Safari;
9、 Opera;
不能直接正常访问的浏览器:
1、 Firefox;
3.2. Firefox浏览器安装证书
Firefox有自己的一套证书系统,不使用windows的系统证书;
3.2.1. 方法一:添加例外
1、 打开Firefox浏览器,打开登录界面,弹出如下链接不安全提示;
2、 点击高级-》添加例外;
3、 确认安全例外后,可以正常打开页面;
4、 打开工具-》选项-》隐私与安全-》证书-》查看证书,打开证书管理器,可以看到刚才添加的例外证书;
注意:此处添加的证书,服务器(域名+端口),是一一对应的;如果是同一个证书(比如:多域名证书),配置在多个“域名+端口”上,就需要逐个添加;
3.2.2. 方法二:添加例外
1、 仿照方法一,直接在Firefox-》工具-》选项-》隐私与安全-》证书-》查看证书-》服务器-》添加例外,依次添加如下“域名+端口”对应的证书: