sunJCE or ibmJce,was服务器下使用des的注意点

最近开发了一个应用,在tomcat下一切ok,到was上有报错。

打开debug日志,没有异常??

继续调查发现是我们的程序引用了一个sun很久以前的jar.这个jar需要单独打开message日志

在一堆日志中找到了:
java.security.NoSuchProviderException: no such provider: SunJCE
        at sun.security.jca.GetInstance.getService(GetInstance.java:82)
        at javax.crypto.b.a(Unknown Source)
        at javax.crypto.SecretKeyFactory.getInstance(Unknown Source)
        at
com.iplanet.services.util.JCEEncryption.setPassword(JCEEncryption.java:369)
        at com.iplanet.services.util.Crypt.createInstance(Crypt.java:126)
        at com.iplanet.services.util.Crypt.initialize(Crypt.java:97)

这个包里使用了des加密,但是sun的组件,当然是使用sunJDK里自己sunJCE

而IBM was服务器里没有这个sunJCE的provider,于是就?no such provider

因此,我们只要提供这个sunjce的provider就可以使程序正常运行而无需修改。

常规的方法,就是下载sunjce_provider.jar,修改jdk的policy,启用这个jce(这个是jdk的安全配置,不能直接引入相应的jar包)

具体IMB的文档参考:http://www.ibm.com/developerworks/websphere/library/techarticles/0306_yu/yu.html
不过这个sun的jar包里却预留了解决方案,反编译这个jar,可以看到sun写这个jar的时候提供了配置项(32个赞):

 CRYPTO_DESCRIPTOR_PROVIDER = System.getProperty("amCryptoDescriptor.provider", "SunJCE");
 KEYGEN_ALGORITHM_PROVIDER = System.getProperty("amKeyGenDescriptor.provider", "SunJCE");
 Cipher.getInstance(CRYPTO_DESCRIPTOR, CRYPTO_DESCRIPTOR_PROVIDER)
 this.pbeKey = SecretKeyFactory.getInstance(KEYGEN_ALGORITHM, KEYGEN_ALGORITHM_PROVIDER).generateSecret(new PBEKeySpec(paramString.toCharArray()));

而IbmJCE与SunJCE都遵循jce1.2.1规范,这里使用是兼容的
因此只要添加应用程序的jvm参数 -DamCryptoDescriptor.provider=IBMJCE -DamKeyGenDescriptor.provider=IBMJCE,问题解决

下面是官方的说明:

https://java.net/projects/opensso/lists/dev/archive/2008-10/message/22

-DamCryptoDescriptor.provider=IBMJCE -DamKeyGenDescriptor.provider=IBMJCE

ERROR: Crypt: failed to set password-based key

java.security.NoSuchProviderException: no such provider: SunJCE

文章来源:http://blog.xujif.com/archives/sunjce-or-ibmjce.html

sunJCE or ibmJce,was服务器下使用des的注意点

时间: 2024-10-12 21:05:11

sunJCE or ibmJce,was服务器下使用des的注意点的相关文章

linux服务器下配置多tomcat

车辆交易用的系统模块,正在做.老板要看看,以便车城那边的人提出意见.于是在服务器上再次增加一个tomcat. 以前是配置过的,配置过程其实很简单,这次太大意了,找了半天问题. 首先是拷贝一个tomcat,放到一个新的位置,这个tomcat就是我要用的新的tomcat. 然后去配置一下日志的输出位置,在bin目录下的catalia.sh或者startup.sh.网上怎么样配置的都有,呵呵. 然后修改server.xml,配置好虚拟目录和端口信息.在此,connector节点下的protocol一定

用linux服务器下的/dev/shm/来释放磁盘的压力

巧用linux服务器下的/dev/shm/来释放磁盘的压力 浏览:646 | 更新:2013-06-18 18:08 | 标签: 磁盘 tmpfs是Linux/Unix系统上的一种基于内存的文件系统.tmpfs可以使用您的内存或swap分区来存储文件.由此可见,tmpfs主要存储暂存的文件.它有如下2个优势 : 1. 动态文件系统的大小.2. tmpfs 的另一个主要的好处是它闪电般的速度.因为典型的 tmpfs 文件系统会完全驻留在内存 RAM 中,读写几乎可以是瞬间的.同时它也有一个缺点  

windows服务器下配置memcache最大内存值

windows服务器下修改memcache配置要求如下: 1.用内网ip的方式提供web应用服务器调用,不允许直接通过外网调用,如将memcache服务放在192.168.1.168的服务器上 2.修改端口,如改为11200 3.分配内存,如分配1024M(1G内存) 方法如下: 1>开始>运行:regedit(回车) 2>在注册表中找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 3>

嵌入式开发——boa服务器下的ajax与cgi通信

博主最近在最有做一个嵌入式课程设计,要求是利用基于cortax a8的物联网实验箱做一个简单的嵌入式网页交互系统作为课程设计来验收评分.因为本身自己是学前端的,所以网页部分并不是重点,主要是和boa服务器之间的通信,课程实验给的例子是直接使用printf来打印html标签形成新的页面,有过前端开发经验的人都知道这种做法效率低下而且没有办法实现异步刷新,所以博主采用ajax来进行boa服务器下的异步通信. 主要实现及踩过的坑如下: 1. get 还是 post请求:怎么发请求参见W3School上

android系统访问自己的tomcat服务器下的项目不能访问的原因

今天做android的一个下载功能,用自己机子上的tomcat做服务器,在tomcat上下载东西,可是android系统老是提示错误说不能连接到我的tomcat,可是我明明启动了tomcat服务啊,而且代码我也检查了好就变了,没有错啊,这可是把我给郁闷坏了,相信很多初学者都会有这样的经历,呵呵...真是不知所措,挺让人郁闷的,我在这里和大家分享一下解决方法,呵呵...找到我这篇文章你就算是找到解决办法了.原因其实很简单,开始我的链接写的是:http://127.0.0.1:8090/项目的名字/

tomcat与IIS在多IP服务器下的支持

同一个服务器下,双IP(或更多IP),实现tomcat与IIS公用80端口. 操作其实也很简单的,首先禁用iis的套接字池,iis绑定一个ip,然后tomcat在绑定另一个ip,最后重启下服务器即可.以下有一个简单操作的说明.   禁用IIS的套接字池(如果这一步没调好,便不会成功),在微软官方网站上有解释: http://support.microsoft.com/kb/238131/zh-cn 方法/步骤 第一部分:禁用套接字池   要禁用套接字池,请执行下列步骤: 1. 打开命令提示符并确

CentOS服务器下对mysql的优化

原文链接: CentOS服务器下对mysql的优化 一.mysql的优化思路 mysql的优化分为两方面: 1. 服务器使用前的优化 2. 服务使用中的优化 二.mysql的基础优化步骤 1. 硬件级优化 (1). 最好mysql自己使用一台物理服务器 (2). 内存和CPU方面,根据需求给予mysql服务器足够大的内存和足够多的CPU核数 (3). 避免使用Swap交换分区–交换时从硬盘读取的它的速度很慢,有的DBA安装系统时就不装swap分区 (4). 如果是mysql主库,硬盘可以选用比较

阿里云服务器下配置Nginx+PHP+Mysql+webbench(压力测试)+iftop(监控流量)

注意:在阿里云服务器下不用配置iptables 1.关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq #保存退出 shutdown -r now #重启系统 2.使用yum安装wget yum install wget #安装下载工具 wget http://www.atomicorp.com/installers/atomic

Linux服务器下没有root权限装Matlab R2013a

Matlab R2013a Unix版下载地址 注意:由于我是在单位的集群系统上装Matlab,没有root权限,故下载下来的.iso文件不能在linux下用mount命令挂载,故先在Win下解压,再将解压后的文件上传至服务器. 由于没有root权限,所有需要安装的内容都装在自己的家目录下. 另外,如果你也是在高性能计算集群上装,最好在登陆节点上装,因为我开始是在计算节点上装总是报错 - -# 平台:系统内核:x86_64.操作系统:CentOS release 6.3 (Final) ====