bouncycastle + JBoss AS7:JCE无法验证提供者BC
我在应用程序中使用BouncyCastle进行加密。当我独立运行它时,一切正常。但是,如果将其放在webapp中并部署在JBoss服务器上,则会出现以下错误:
javax.servlet.ServletException: error constructing MAC: java.security.NoSuchProviderException: JCE cannot authenticate the provider BC(...)
root cause
java.lang.Exception: error constructing MAC: java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
(...)
root cause
java.io.IOException: error constructing MAC: java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
org.bouncycastle.jce.provider.JDKPKCS12KeyStore.engineLoad(Unknown Source)
java.security.KeyStore.load(Unknown Source)
这是导致此错误的代码的一部分:
if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
}
// Read the Private Key
KeyStore ks = KeyStore.getInstance("PKCS12", BouncyCastleProvider.PROVIDER_NAME);
ks.load(new FileInputStream(certificatePath), privateKeyPassword.toCharArray());
和Maven的依赖:
<dependency> <groupId>bouncycastle</groupId>
<artifactId>bcmail-jdk16</artifactId>
<version>140</version>
</dependency>
你知道我该怎么部署吗?
回答:
不要将充气城堡罐子部署为您的Web应用程序(WEB-INF / lib)的一部分。您当然需要在编译时使用此文件,但是在JBOSS上,它应该在此处:
$JBOSS_HOME/server/default/lib/
代替
yourapp/WEB-INF/lib
以上是 bouncycastle + JBoss AS7:JCE无法验证提供者BC 的全部内容, 来源链接: utcz.com/qa/416971.html