处理WebSphere中RSA加密报错:(java.security.InvalidKeyException: Private Key cannot be used to encrypt.)私钥不能用于加密。
java.security.InvalidKeyException: Private Key cannot be used to encrypt. at com.ibm.crypto.provider.RSACipher.a(Unknown Source) at com.ibm.crypto.provider.RSACipher.engineInit(Unknown Source) at javax.crypto.Cipher.a(Unknown Source) at javax.crypto.Cipher.a(Unknown Source) at javax.crypto.Cipher.init(Unknown Source) at javax.crypto.Cipher.init(Unknown Source) |
原因:WebSphere使用的是IBM JDK,-Dcom.ibm.crypto.provider.DoRSATypeChecking默认为true,私匙不能用于加密。
处理方法:
IBM JDK添加属性:
-Dcom.ibm.crypto.provider.DoRSATypeChecking=false |
或者Websphere增加jvm配置
-Dcom.ibm.crypto.provider.DoRSATypeChecking=false |
Websphere设置步骤:
1.登录WebSphere控制台
2.进入:服务器-服务器类型-WebSphere Application Server
3.点击应用程序服务器“server1”,进入“配置”页面
4.点击“服务器基础结构-Java 和进程管理-进程定义”,进入“应用程序服务器 > server1 > 进程定义”页面
5.点击“Java虚拟机”进入“应用程序服务器 > server1 > 进程定义 > Java 虚拟机”配置页面
6.在“通用 JVM 参数”中输入设置属性
-Dcom.ibm.crypto.provider.DoRSATypeChecking=false |
7.点击“应用”按钮
8.注销控制台,选择“保存”按钮保存本次修改并退出控制台,完成WebShere的配置
9.重启应用
----------------------------------------------------------------------------------------------------------
处理WebSphere设置后不生效问题
查询websphere版本,如果是7.0.0.13,升级为7.0.0.33或其他版本,原因:7.0.0.13版本bug,设置环境变量(-Dcom.ibm.crypto.provider.DoRSATypeChecking=false)不生效