最近开发了一个应用,在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的注意点的更多相关文章

  1. linux服务器下添加字体

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 引言:这两天在开发一个动态生成海报的东西(图片拼接,图片水印),开发在windows下没有问题,图片和文字都能正常的生成出来. ...

  2. IIS服务器下301跳转是怎么样实现的?

    301跳转的用法很多,对于一名SEO来说,301转向是必须掌握的本领,但是对于301转向而言,许多人都并不清楚,301跳转以后,需不需要对原网站进行优化,再次提及一边301跳转的定义. 所谓301跳转 ...

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

    同一个服务器下,双IP(或更多IP),实现tomcat与IIS公用80端口. 操作其实也很简单的,首先禁用iis的套接字池,iis绑定一个ip,然后tomcat在绑定另一个ip,最后重启下服务器即可. ...

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

    巧用linux服务器下的/dev/shm/来释放磁盘的压力 浏览:646 | 更新:2013-06-18 18:08 | 标签: 磁盘 tmpfs是Linux/Unix系统上的一种基于内存的文件系统. ...

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

    Matlab R2013a Unix版下载地址 注意:由于我是在单位的集群系统上装Matlab,没有root权限,故下载下来的.iso文件不能在linux下用mount命令挂载,故先在Win下解压,再 ...

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

    博主最近在最有做一个嵌入式课程设计,要求是利用基于cortax a8的物联网实验箱做一个简单的嵌入式网页交互系统作为课程设计来验收评分.因为本身自己是学前端的,所以网页部分并不是重点,主要是和boa服 ...

  7. CentOS服务器下对mysql的优化

    原文链接: CentOS服务器下对mysql的优化 一.mysql的优化思路 mysql的优化分为两方面: 1. 服务器使用前的优化 2. 服务使用中的优化 二.mysql的基础优化步骤 1. 硬件级 ...

  8. Linux服务器下对Oracle作Rman备份

    由于工作需要,最近要对几台Linux系统下的Oracle数据库进行Rman备份,就在操作的同时,整理了一下,方便今后作为资料进行查阅. ------------------------Linux服务器 ...

  9. Docker Swarm搭建多服务器下Docker集群

    对于有多台服务器来讲,如果每一台都去手动操控,那将会是一件非常浪费时间的事情,毕竟时间这东西,于我们而言,十分宝贵,或许在开始搭建环境的时候耗费点时间,感觉是正常的,我也如此,花费大堆时间在采坑和填坑 ...

随机推荐

  1. ASPNET异步删除和增加

    function InitList() { $.getJSON("GetNewsList.ashx", {}, function (data) { for (var i = 0; ...

  2. 谷歌 google

    google Google是搜索引擎名,也是一家美国上市公司名称.Google公司于1998年9月7日以私有股份公司的形式创立,以设计并管理一个互联网的搜索引擎.Google公司的总部称作“Googl ...

  3. 工作那些事(四)大公司VS小公司

    都说大公司学做人,小公司学做事.这话有一定的道理,但是也不是绝对的.做人简单地说就是与人打交道,为人处世:做事,对我们来说就是实现需求,解决bug.有句话,是这么说的:有人的地方就有江湖,有江湖,就得 ...

  4. cocos2d-x精灵移动的方法

    1.飞机发射子弹型 想要实现子弹的的飞行效果,又不想在每帧Update里计算位置,最好的方法调用CCMoveTo 例在发射子弹的时机,能够ccTouchBegan时: CCMoveTo* move = ...

  5. Robotium API -- 判断测试结果的方法assert、is、search

    下面的这些方法都主要用来判断测试结果是否与预期结果相符,一般把is和search方法放在assert里面判断.assert最常用的还是assertThat方法,是Junit的判断,这里就不多说了. 断 ...

  6. JBoss 系列九十九:Rest WebService jBPM 6 集成演示样例

    概述 jBPM 6 提供 Rest API 供第三方应用整合使用 jBPM 6,本文演示假设通过 Rest API: 启动流程 获取流程实例信息 启动 User Task 完毕 User Task j ...

  7. rsync+inotify实现服务器之间文件实时同步--转

    之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道 ...

  8. Chapter 2. Overview gradle概览

    2.1. Features //gradle特性 Here is a list of some of Gradle's features. Declarative builds and build-b ...

  9. 5、第5节课CSS补充和html 标签讲解20150924

    1. DIV 隐藏 A: 隐藏之后不占位置  display:none; B:隐藏之后占位置 visibility:hidden; 2.DIV 排序 z-index:2;  默认是1,如果想DIV在上 ...

  10. Svg操作

    SVG文件的JavaScript操作 获取SVG DOM 如果使用img标签插入SVG文件,则无法获取SVG DOM.使用object.iframe.embed标签,可以获取SVG DOM. var ...