>> ZC程序迁移到linux仍不能使用证书登陆,经过同吉大、oracle近一个月的交流,大概发现问题的原因:在linux下(只在linux+weblogic9X以上存在该问题)pmiToolkits.INI参数名称不能变动否则,吉大接口读取的时候会以为没有配置接口,直接读取默认地址,导致证书无法获取权限,需要研发配合如下工作:
>>1、按吉大的要求使用pmitookits.INI文件,例如:某某ServerIP使用某某IP名称;
>>2、zc接口按标准pmitookits.INI文件取参数名字。(附近pmitookits.INI参数名为ZC系统正在使用的需要修改)
>>> 经过研究分析,Weblogic9.x及后续版本中,在服务器端,对获取的客户证书时,采用了不兼容中文的编码格式。
>>>因此,需要对获取到的证书进行转码处理,处理方式关键代码如下(参照一些代码,修改中间件改造代码即可):
>>> //gaX509Cert为从request中获取到的证书对象。
>>> ByteArrayInputStream bais = new ByteArrayInputStream(gaX509Cert.getEncoded());
>>>//构建一个CertificateFactory 对象。
>>> CertificateFactory cf = CertificateFactory.getInstance("X.509");
>>>//重新构建证书对象。
>>> gaX509Cert = (X509Certificate)cf.generateCertificate(bais);
>>>//关闭流。
>>> bais.close();
>>>
>>>//然后,重新获取证书DN、扩展域值时,即可消除中文乱码。
>>>String certDN = gaX509Cert.getSubjectDN().toString();
>>>//...
>>>注意,需要在页面或Java代码中import相应的包。
>>>java.security.cert.CertificateFactory
>>>java.io.ByteArrayInputStream
>>1、按吉大的要求使用pmitookits.INI文件,例如:某某ServerIP使用某某IP名称;
>>2、zc接口按标准pmitookits.INI文件取参数名字。(附近pmitookits.INI参数名为ZC系统正在使用的需要修改)
>>> 经过研究分析,Weblogic9.x及后续版本中,在服务器端,对获取的客户证书时,采用了不兼容中文的编码格式。
>>>因此,需要对获取到的证书进行转码处理,处理方式关键代码如下(参照一些代码,修改中间件改造代码即可):
>>> //gaX509Cert为从request中获取到的证书对象。
>>> ByteArrayInputStream bais = new ByteArrayInputStream(gaX509Cert.getEncoded());
>>>//构建一个CertificateFactory 对象。
>>> CertificateFactory cf = CertificateFactory.getInstance("X.509");
>>>//重新构建证书对象。
>>> gaX509Cert = (X509Certificate)cf.generateCertificate(bais);
>>>//关闭流。
>>> bais.close();
>>>
>>>//然后,重新获取证书DN、扩展域值时,即可消除中文乱码。
>>>String certDN = gaX509Cert.getSubjectDN().toString();
>>>//...
>>>注意,需要在页面或Java代码中import相应的包。
>>>java.security.cert.CertificateFactory
>>>java.io.ByteArrayInputStream