故事背景
领导发了一个图,说备灾服务器内网使用https访问显示不安全,需要重新更换证书。这个HTTPS证书配置还是挺多地方会用到,在上一家公司等保扫描的时候也需要配置HTTPS,对于传输的数据进行加密,安全性比较高。那时候我还没发现什么问题,我就开始试着更换现网tomcat的https证书。
开始更换
1、找到tomcat的conf目录,查看ssl证书位置
2、查询tomcat的进程,关闭tomcat
shell
ps -ef|grep tomcat
kill -9 pid
3、替换jks文件,修改kepstorePass密码(如果修改了)
tips:如果ssl证书密码修改了 配置没修改,启动会报错
4、重启tomcat
shell
./bin/startup.sh
5、查看tomcat日志
shell
cd ..
tail -f logs/catalina.out
更换完访问https接口(内网),发现还是不安全,但是有效期已经更新了,说明证书更新成功
接着用nginx负载地址访问,发现是正常
我就在想,是不是他搞错了,内网不经过互联网没有证书校验,肯定显示不安全的吧?带着这个问题,我开始查阅资料。
问题排查
百度后发现,需要确认网站域名与SSL证书是否匹配,确保用户访问的网站域名和SSL证书中设置的域名一致。那用外网ip访问会不安全吗?我用测试环境外网ip访问试试,发现还是不安全,那就不是对比ip,要对比域名了。 结果看测试环境又有新的发现,测试环境的域名和证书的不一样也能显示安全...
咋回事?接着我看一下那个ssl证书看看能不能找到什么蛛丝马迹,结果找到了,这个证书配置了备用名称
Nginx更新证书
除了tomcat需要更新ssl证书,还有nginx也用到ssl证书。业务逻辑是用户请求到域名,域名绑定两个nginx负载地址,nginx在分发到每一台负载的服务器。其实在现网每一台服务器tomcat都只开放了http端口,没有开放https,一般来说也不会单独访问某一台的https端口,而且内网也会显示不安全问题....所以后面我建议把tomcat的https端口关闭,一开始他说可以关,后面又说不关,把证书都更新了.....
还有nginx证书的更新,这个还是比较简单的。
1、找到nginx的安装路径
js
ps -ef|grep nginx 查看pid
ls -l /proc/{pid}/cwd
2、找到nginx.conf文件,找到证书位置
3、更换证书
4、重启nginx ./nginx -s reload
5、查看nginx日志
总结
tomcat的ssl证书是在server.xml配置,如果是内网或者ip访问会显示不安全,因为没有匹配上ssl证书的域名,但是api接口调用是没问题的。那么证书校验不通过会不会继续加密呢?我猜测应该会吧,只是浏览器有个提示