关于上传证书时遇到的坑


    昨天在我开心地开发公司相关项目时,突然间不知怎么地,公司商户管理部那边负责人突然间给我发了一个截图,然后附上文字说明:导入公钥证书时出现页面一直显示空白的状态无任何响应,然后点击关闭居然报错了!!!我一看,懵逼了,且看下图:

上传时的出现的空白页面:

上传证书截图
点击关闭后出现的报错信息:

报错弹出框
    于是看到这些截图,我二话不说,主动向商户那边要了他正导入的那个公钥证书,马上在本地跑了一遍,没想到居然都是可以成功导入的,不信就看下图咯!
在这里插入图片描述
从上图可以看出,正常导入证书后的结果应该显示上图的文件信息和“上传成功”的提示语,而不应该是空白页面~于是为了迅速找到原因,我主动去生产排查了日志,发现确实有地方报错了:
在这里插入图片描述
从以上的报错信息从代码上分析发现原来是如果用户点击了关闭按钮,那么也就终止了证书的导入过程从而导致了在主页面上没有获取到certId(即证书id为null),再深入排查下,原来用户再关闭这个导入的文本框的时候会触发数据库的一个查询语句,即select * from 表名 where certId=?,如果certId为空,那么程序自然就会报错的,具体代码如下图所示:

在这里插入图片描述

在这里插入图片描述
从上图中可看出用户在关闭文本框时触发了getImportCerInfo()这个方法,在getImportCerInfo这个方法旁边的rt变量正好是证书id,而且这个证书id正好是getImportCerInfo这个方法的局部参数,同时也是执行select * from 表名 where certId=?这个sql语句时所要传入的预编译参数,如果certId为空,自然会报上面的错!

但是问题来了,既然是因为用户关闭了这个文本框导致导入证书过程中断而出错,那么为什么文本框会一直显示空白页面从而不断处于导入中呢?这就奇怪了!!而且更奇怪的是,商户管理部那边还说除了这个证书其它公钥证书都是可以正常导入的,而且换了不同的浏览器都导入不了该证书。不过在我的本地服务器和测试服务器都是可以导入这个证书的!这又是为什么呢?
经过漫长的排查无果后,我开始绝望了。。。。。。。
正当我不知所从时,测试人员突然间提醒了我一下会不会是公钥证书文件名是中文导致的,我想想不至于呀,在我本地测试时什么中文名啊都是可以导入相对应的证书的!难道就他们那边导不进去??没办法了,还是要硬着头皮去商户管理部那边叫他们改下公钥证书文件的文件名,于是将荣邦科技-公钥.cer改成了0001.cer重新导入,没想到没想到,居然成功了!!!!!哇靠!!这都行???真是太开心了!!!


    至于为什么这个证书名称改成数字后才能在他们那里导入,在我们这里无论是中文还是其它都可以导入呢?感觉百思不得其解啊!!估计是我们的浏览器配置版本和他们不一样导致的,或许也有可能是杀毒软件影响吧!!不管了,总之下次遇到类似这种证书导入的问题,也有妙招了!!哈哈哈哈!!!

发布了17 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Melo_FengZhi/article/details/86171040
今日推荐