在Websphere自由配置文件中使用bouncycastle

时间:2014-07-25 06:20:42

标签: bouncycastle jce websphere-liberty

我们的应用程序使用Bouncycastle。我现在正尝试在websphere liberty配置文件上部署我的应用程序并获得以下错误

[err] java.io.IOException: error constructing MAC: java.lang.SecurityException: JCE cannot authenticate the provider BC
[err]   at org.bouncycastle.jce.provider.JDKPKCS12KeyStore.engineLoad(Unknown Source)
[err]   at java.security.KeyStore.load(KeyStore.java:1214)
[err]   at com.manh.jwt.JwtKeyManager.loadPrivateKeyByIssuer(JwtKeyManager.java:213)

因此,我没有在WEB-INF / lib目录中使用bouncycastle jar,而是创建了一个共享库,并将此库作为 privateLibraryRef 添加到我的Web应用程序中。我仍然得到同样的错误。

这是我的server.xml供您参考。

<server description="new server">

<!-- Enable features -->
<featureManager>
    <feature>jsp-2.2</feature>
    <feature>servlet-3.0</feature>
</featureManager>
<webContainer deferServletLoad="false" />
<httpEndpoint id="defaultHttpEndpoint"
              host="localhost"
              httpPort="20000"
              httpsPort="9443" />

<library id="configResources">
    <folder dir="${server.config.dir}/conf" />
</library>      


<library id="bc">
    <fileset dir="${server.config.dir}/bclib" includes="*.jar" />
</library>      

<webApplication name="scope" location="scope.war" contextRoot="/">
    <classloader privateLibraryRef="configResources, bc" />
</webApplication>
</server>

有没有其他设置我可以尝试让这个工作?

1 个答案:

答案 0 :(得分:0)

让Bouncy Castle密码学与WAS Liberty协同工作的神奇之处在于它也适用于堆叠产品。

  1. 创建&#34; jvm.options&#34;文件在服务器工作目录中。在默认安装中,这将是wlp / usr / servers /
  2. 将以下内容添加到&#34; jvm.options&#34;文件。
    一个。 -Djava.ext.dirs = //我用/ opt / fun / libs和wlp / usr / servers / defaultServer和wlp / usr / servers / defaultServer / libs测试了这个。这三个都奏效了。如果我包含WEB-INF / lib目录的路径,则失败。  湾-Dorg.osgi.framework.bootdelegation = org.bouncycastle.jce.provider
  3. 将bouncy castle jar从WEB-INF / lib目录复制到java.ext.dirs定义的目录(上图)。
  4. 停止并启动服务器,因为您正在更改JVM参数。
  5. 测试应用程序或堆叠产品。