解决CAS 单点登录、iframe在最新版谷哥(99)Edge(99)等浏览器Cookie丢失的过程实记(三)

542 阅读4分钟

一、实记前言

各位看官你们好,经过上一篇我的文章:解决CAS 单点登录中iframe在最新版谷哥(99)Edge(99)等浏览器中Cookie丢失的方案(二)通篇的介绍以及铺垫,我相信您已经大概的知道了我们的应用场景了。下面继续介绍发现问题的过程以及如何解决我们遇到的问题。 先上一张图,让大家了解一下各个系统的情况。

cas_http.png

继续第二篇的问题进行讲述: 因为我们本地测试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版本浏览器报错提示: image.png

Edge99版本浏览器报错提示 image.png

三 升级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.

则参照如下博客:

www.cnblogs.com/Guhongying/…

其实,写到这里所有的问题可以做一个简单的总结。大多时候,我们既是问题的缔造者,又是问题的发现者,还是问题的解决者。如果只能制造问题,不能发现问题,那就只能被别人挖坑。如果能制造问题,又能及时发现问题,并进行改正,我们可以进步。不能发现解决问题更是不可能解决问题。找到问题其实就差不多等于已经解决的问题的一半。只有经常学习,经常实践,并不断进行总结才能让我们不断的提高自己。

另外如果看到此文章的朋友,如有问题欢迎大家批评指正,也欢迎大家留言讨论。最后希望大家能一起学习一起前进步。