2014-07-25 234 views
0

我們的應用程序使用Bouncycastle。我現在在嘗試部署我在WebSphere Liberty配置文件的應用程序,並提示以下錯誤:在Websphere Liberty配置文件中使用bouncycastle

[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的罐子,我創建了一個共享庫,並將此庫作爲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> 

是否有任何其他設置,我可以嘗試使這個工作?

+0

可能重複的[BouncyCastle的+的JBoss AS7:JCE不能驗證BC提供商(http://stackoverflow.com/questions/9534512/bouncycastle-jboss-as7-jce-cannot-authenticate-the-provider- BC) –

+0

我對Bouncy Castle一無所知,但是從四處搜尋,我會使用此解決方案:http://stackoverflow.com/a/17400821/142446作爲修改JDK映像的替代方法,您可以設置-Djava.ext 。jvm.options中的.dirs指向其他目錄。 –

+0

感謝@bkail的信息。它適用於修改java.security文件。我們不能這樣做,因爲我們的部署無法訪問java安裝目錄。我們想要按照http://www.bouncycastle.org/wiki/display/JA1/Provider+Installation中的說明動態添加提供程序。這在Websphere Liberty配置文件中不起作用 – Palanivelrajan

回答

0

以下是讓Bouncy Castle加密技術與WAS Liberty配合使用的魔力,它也適用於堆疊產品。

  1. 在服務器工作目錄中創建一個「jvm.options」文件。在默認安裝中,這將是wlp/usr/servers/
  2. 將以下內容添加到「jvm.options」文件中。
    a。 -Djava.ext.dirs = //我使用/ opt/fun/libs和wlp/usr/servers/defaultServer和wlp/usr/servers/defaultServer/libs對此進行了測試。三人都工作。如果我包含了一個到WEB-INF/lib目錄的路徑,那麼它失敗了。 b。 -Dorg.osgi.framework.bootdelegation = org.bouncycastle.jce.provider
  3. 將WEB-INF/lib目錄中的bouncy castle jar複製到java.ext.dirs定義的目錄(上面)。
  4. 停止並啓動服務器,因爲您正在更改JVM參數。
  5. 測試應用程序或堆疊產品。
+0

當然,你從我身上竊取榮耀.. :-P 我會補充說這個配置不被IBM JDK支持(但是 - 如果你認爲這很重要,請打開一個RFE),所以使用Oracle JDK會更好。 – ebullient

相關問題