嗨!
我试图通过我的java应用程序提供的Web服务访问EJBCA服务器。我正在尝试从官方文档(http://ejbca.org/docs/adminguide.html#Using%20the%20Web%20Service%20API%20for%20Integration)运行以下代码段:
CryptoProviderTools.installBCProvider();
String urlstr = "https://localhost:8443/ejbca/ejbcaws/ejbcaws?wsdl";
System.setProperty("javax.net.ssl.trustStore","p12/wstest.jks");
System.setProperty("javax.net.ssl.trustStorePassword","foo123");
System.setProperty("javax.net.ssl.keyStore","p12/wstest.jks");
System.setProperty("javax.net.ssl.keyStorePassword","foo123");
QName qname = new QName("http://ws.protocol.core.ejbca.org/", "EjbcaWSService");
EjbcaWSService service = new EjbcaWSService(new URL(urlstr),qname);
ejbcaraws = service.getEjbcaWSPort();
然而,第一行给了我一个ClassCastException:org.bouncycastle.jce.provider.BouncyCastleProvider cannot be cast to org.bouncycastle.jce.interfaces.ConfigurableProvider
。我已经检查过BouncyCastleProvider确实实现了ConfigurableProvider接口。
更奇怪的是,当我调用该函数两次(CryptoProviderTools.installBCProvider()
)时,我第二次得到NoSuchFieldError
,原因如下:java.lang.NoSuchFieldError: SN
非常感谢你的帮助:))
答案 0 :(得分:0)
我遇到了同样的问题,我找到了这份文件" The Cryptoworkshop Java Cryptography Guide and the Bouncy Castle API"在http://www.cryptoworkshop.com/guide/cwguide-070313.pdf
说: 要在运行时安装提供程序,只需添加: Security.addProvider(new BouncyCastleProvider());
这还需要导入:
import java.security.Security; import org.bouncycastle.jce.provider.BouncyCastleProvider;
如果我检查供应商,我确实看到BC
Provider[] myProviders = Security.getProviders();
for (Provider prov : myProviders) {
System.out.println("Prov:" + prov.getName());
}
(需要导入import java.security.Provider)
但是当我尝试从ejbca获取任何信息时我就陷入了困境
管理员未获得资源/管理员授权。消息:。
希望能帮到你。