2016-12-05 12 views
1

私は、次のようにのpom.xmlでの依存関係としてはBouncyCastleと春ブーツ(1.4.2.RELEASE)プロジェクトを持っている:私は指定しようとすると、しかし春ブーツとJCAプロバイダ

pom.xml 
... 
<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcprov-jdk15on</artifactId> 
    <version>1.54</version> 
</dependency> 
<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcpkix-jdk15on</artifactId> 
    <version>1.54</version> 
</dependency> 
... 

以下のような私のコードでのJCA操作のためのプロバイダとして、「BC」、:

Signature aSig = Signature.getInstance("SHA256withRSA","BC");

私は標準にはそのようなプロバイダーの例外を取得していませんエントリー私のJREのjava.securityファイル内

security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider

を有しているにもかかわらず

。私のPOMファイルでこの依存関係で

、構築されたjarファイルは、BOOT-INF/libフォルダに弾む城の瓶を持っている:「私は無問題でそれらの中にクラスにアクセスすることができますが、JCAができ

3277268 Tue Dec 29 12:46:28 EST 2015 BOOT-INF/lib/bcprov-jdk15on-1.54.jar 
673715 Tue Dec 29 12:46:02 EST 2015 BOOT-INF/lib/bcpkix-jdk15on-1.54.jar 

プロバイダを見つける。

したがって、JCA には、プロバイダのjarsがjre/lib/extにある必要がありますか?

...または私は単に何かが不足していますか?

EDIT:

しかし、この:

Signature.getInstance("SHA256withRSA",new BouncyCastleProvider());

作品。

答えて

2

使用する前にBouncycastleプロバイダをインストールする必要があります。弾む城プロバイダを追加$JAVA_HOME/jre/lib/security/java.security

security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider 

の最後のエントリとしてプロバイダを追加静的

プロバイダをインストールする動的

import org.bouncycastle.jce.provider.BouncyCastleProvider; 
... 
Security.addProvider(new BouncyCastleProvider()); 

http://www.bouncycastle.org/wiki/display/JA1/Provider+Installation

は、プロバイダのインストールを参照してください。瓶$JAVA_HOME/jre/lib/ext

+0

私は静的なインストールを行います...私のオリジナルの投稿を参照してください。 – RobD

+0

次に、jreを 'jre/lib/ext'に追加する必要があります。また、 'bouncycastle'は依存関係を持つことができるため、positiを使用しないでください。 bouncycastleを参照するOracle https://docs.oracle.com/cd/E19830-01/819-4712/ablsc/index.htmlのこのリンクを参照してください。これらの他のリンクでは、jarをJVMの 'lib/ext'に含める必要があることも示しています。http://tomee.apache.org/bouncy-castle.html https://docs.jboss.org/jbossas/docs/Server_Configuration_Guide /4/html/ch09s19s04s04.html – pedrofb

+0

ご返信ありがとうございます...感謝しています。あなたのコメントについては、どうしてですか?signature.getInstance( "SHA256withRSA"、新しいBouncyCastleProvider());仕事だが署名。getInstance( "SHA256withRSA"、 "BC");ジャーが/ jre/lib/extフォルダにない*ときに失敗しますか? – RobD