最近碰到一个很头疼的事情 内网的tomcat服务器使用的是https协议,之前一直没有发现有什么问题,
现在突然发现其他它的前端静态文件从来不走缓存,大概有10M左右的js css文件 居然是每次访问的时候都要去下载,排查了几个小时 本以为是后端静态文件版本控制出了问题,结果最后发现居然是谷歌浏览器的问题. 火狐 IE 即使https 不信任站点一样正常会有缓存 谷歌浏览器的策略居然是 只要非安全站点统统不缓存
接下来自然是制作证书试图让浏览器信任网站了,结果制作证书又遇到一堆问题,怎么都信任不了,好不容易终于搞定了,这里记个笔记
证书制作采用的仍旧是jdk自带的keytool
命令行照下面修改 其中 “C:/Users/lenovo/Desktop/tomcat.keystore” 是文件保存路径
-ext san=ip:168.5.22.49 最为重要 为证书指定信任的域名或IP 所以不同环境证书都要重新制作过
如果存在域名或多个IP: SAN=dns:xxx.abc.com,ip:1.1.1.1 可以类似这样 用英文逗号分隔
//命令
keytool -genkey -v -alias tomcat -keyalg RSA -keystore "C:/Users/lenovo/Desktop/tomcat.keystore" -ext san=ip:168.5.22.49 -validity 36000
//===========================================================
//制作全过程
C:\Users\lenovo>keytool -genkey -v -alias tomcat -keyalg RSA -keystore "C:/Users/lenovo/Desktop/tomcat.keystore" -ext san=ip:168.5.22.49 -validity 36000
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: -ext san=ip:168.5.22.49
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]:
CN="-ext san=ip:168.5.22.49", OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
[否]: Y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 36,000 天):
CN="-ext san=ip:168.5.22.49", OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
输入 <tomcat> 的密钥口令
(如果和密钥库口令相同, 按回车):
[正在存储C:/Users/lenovo/Desktop/tomcat.keystore]
其中 您的名字与姓氏是什么? 这里输的 必须要和 命令行的-ext 一致 如 这里是 -ext san=ip:168.5.22.49
接下来将证书放到tomcat内 或者固定一个目录 我这里直接放tomcat的 根目录
打开 tomcat 的conf 的server.xml
打开https 的Connector注释 修改 keystoreFile指向秘钥文件 keystorePass输入刚才的秘钥密码即可
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
keystoreFile="D:/apache-tomcat/tomcat.keystore"
keystorePass="123456"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
重启tomcat 访问网站
点击 不安全 三个字
顺利导出证书
右键 安装证书 下一步
然后 一下步 直到完成 重启浏览器
OVER