2014-07-25 4 views
0

우리 애플리케이션은 Bouncycastle을 사용합니다. 지금 스피어 자유 프로필에 내 응용 프로그램을 배포하려고 시도하고 아래의 오류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 항아리 데, 내가 공유 lib 디렉토리를 생성하고,이 라이브러리를 추가 내 웹 응용 프로그램에 privateLibraryRef. 나는 여전히 같은 오류가 발생합니다.

여기 내 참조 용으로 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 + 보스의 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 디렉토리의 탄력성 jar 파일을 java.lang.dirs 정의 디렉토리 (위)에 복사하십시오.
  4. JVM 인수를 변경하기 때문에 서버를 중지하고 시작하십시오.
  5. 응용 프로그램 또는 누적 된 제품을 테스트하십시오.
+0

그리고 물론, 당신은 나에게서 영광을 훔칩니다. :-P 이 구성은 IBM JDK에서 지원되지 않습니다 (그러나 이것이 중요하다고 생각한다면 RFE를여십시오). Oracle JDK가 더 좋을 것입니다. – ebullient

관련 문제