前一段时间在项目中用到了信息的加解密和生成数字签名和验签,其中使用了CA给提供的安全证书和工具jar包--javasafeengine.jar,项目在Tomcat下跑的一切正常,但当项目部署到WebSphere时却签名模块跟加密模块却无法工作,在网上查了很多的资料,基本确定了是由于WebSphere使用的是IBM自己的JDK引起的问题,在Tomcat环境下,加密工具jar包所采用的都是Sun公司所提供的加密和签名算法,而在IBM-JDK环境下这些算法都被IBM重新写过,因此需要对原先的参数做一些修改;
另,由于WebSphere部署于linux中,因此原先的PKCS12格式的密钥无法使用,需要把PKCS12格式的密钥文件转换为JKS格式的密钥,方法是在cmd中输入命令:
keytool -importkeystore -v -srckeystore src.pfx -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore dest.keystore -deststoretype jks -deststorepass 123456
在使用的过程中,需要做出以下几点修改:
1.在进行生成签名的过程中,首先需要加载密钥文件,就是刚才那个.jks结尾的文件,但是如果使用工具包中的方法:
private static javasafeengine oSE=SafeEngine.getInstance();
KeyStore ks=oSE.getKeyStore("JKS","SUN","/opt/my/test.jks","123456");