一、实记前言
各位看官你们好,经过上一篇我的文章:解决CAS 单点登录中iframe在最新版谷哥(99)Edge(99)等浏览器中Cookie丢失的方案(二)通篇的介绍以及铺垫,我相信您已经大概的知道了我们的应用场景了。下面继续介绍发现问题的过程以及如何解决我们遇到的问题。 先上一张图,让大家了解一下各个系统的情况。
继续第二篇的问题进行讲述: 因为我们本地测试ok,只要是上了内侧环境就报错,所以在此必须介绍一下我们本地开发环境以及内侧环境。
二、开发以及内测环境介绍(主要介绍我们的B系统)
- 开发环境
win10,nginx 1.15.8,springboot2.2.13,mysql 8,达梦8,openssl 3.0.2 (支持tls3),ssl证书是tls3
- 内测环境(主要介绍我们的B系统)
国产凝思系统,内置的openssl 0.98.e 。。。。只是支持tls1***,ssl证书也是tls3,nginx 1.15.8,springboot2.2.13,mysql 8,达梦8 相信看到这里的人已经明白是什么原因导致的报错了。只不过谷歌浏览99 和Edge浏览器报错现象不同而已。 内测环境安装的openssl版本太低,并不支持tls3,windows环境是修改成 https的时候新安装的openssl,支持tls3,另外开发环境与内测环境nginx版本都是相同的。 。 。 。 。 。因为虽然改成了https协议,并且nginx也配置 了ssl模块,也已经重新编译。但是因为此时低版本浏览器估计有bug(只是本人猜测,没有细究)或者是安全限制策略本身的问题,谷哥79版本不存在问题,但是99版本就会报错
谷哥99版本浏览器报错提示:
Edge99版本浏览器报错提示
三 升级openssl
既然猜到的问题所在就修改一下试试呗。把内侧环境openssl重新替换最新的包。重新编译nginx,重启nginx,重新访问,奇迹出现了。问题立马消失。 我去。。。。。。。。。。。。。。。 此处贴上nginx重新编译的部分步骤:也可参考博客:blog.csdn.net/cxy35/artic…
1 检查 Nginx 是否支持 SSL /usr/local/nginx/sbin/nginx -V 查看是否包含 --with-http_ssl_module 模块,如果没有,则需要在编译时指定或增加该模块。
只需要在 ./configure 时指定 ssl 模块
--with-http_ssl_module 已安装过 Nginx 如果已经安装过 Nginx ,又不想重新安装,则可以单独添加 ssl 模块。
关闭 Nginx
/usr/local/nginx/sbin/nginx -s stop
查看 Nginx 安装时的配置参数,复制备用
/usr/local/nginx/sbin/nginx -V
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module ...
进入 nginx-1.16.1 目录
cd /usr/local/nginx-1.16.1
重新执行 cofigure 命令,增加 ssl 模块的配置
./configure
--prefix=/usr/local/nginx
--error-log-path=/usr/local/nginx/logs/error.log
--http-log-path=/usr/local/nginx/logs/access.log
--pid-path=/usr/local/nginx/logs/nginx.pid
--lock-path=/usr/local/nginx/logs/nginx.lock
--http-client-body-temp-path=/usr/local/nginx/temp/client-body
--http-proxy-temp-path=/usr/local/nginx/temp/proxy
--http-fastcgi-temp-path=/usr/local/nginx/temp/fastcgi
--http-uwsgi-temp-path=/usr/local/nginx/temp/uwsgi
--http-scgi-temp-path=/usr/local/nginx/temp/scgi
--with-http_stub_status_module
--with-http_ssl_module
--with-http_gzip_static_module
--with-file-aio
--with-http_realip_module
编译(不安装)
make
备份原来的 nginx 命令
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-bak
替换原来的 nginx 命令
cp /usr/local/nginx-1.16.1/objs/nginx /usr/local/nginx/sbin/nginx
接下来,重启nginx。
如果openssl:已经安装了openssl,但是执行 ./configure时还是一直报:./configure: error: SSL modules require the OpenSSL library.
则参照如下博客:
其实,写到这里所有的问题可以做一个简单的总结。大多时候,我们既是问题的缔造者,又是问题的发现者,还是问题的解决者。如果只能制造问题,不能发现问题,那就只能被别人挖坑。如果能制造问题,又能及时发现问题,并进行改正,我们可以进步。不能发现解决问题更是不可能解决问题。找到问题其实就差不多等于已经解决的问题的一半。只有经常学习,经常实践,并不断进行总结才能让我们不断的提高自己。
另外如果看到此文章的朋友,如有问题欢迎大家批评指正,也欢迎大家留言讨论。最后希望大家能一起学习一起前进步。