Java 如何从数据库中读取密钥库
我正在集成cxf Web服务,没有spring,消息已签名。作为指导,我使用了本教程。 我想在数据库中存储x509证书或密钥库。Java 如何从数据库中读取密钥库,java,web-services,cxf,x509certificate,Java,Web Services,Cxf,X509certificate,我正在集成cxf Web服务,没有spring,消息已签名。作为指导,我使用了本教程。 我想在数据库中存储x509证书或密钥库。 我已重写WSS4JOutInterceptor.loadCryptoFromPropertiesFile方法 @Override protected Crypto loadCryptoFromPropertiesFile(String propFilename, RequestData reqData) throws WSSecurityException {
我已重写WSS4JOutInterceptor.loadCryptoFromPropertiesFile方法
@Override
protected Crypto loadCryptoFromPropertiesFile(String propFilename, RequestData reqData) throws WSSecurityException {
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(...);
X509Certificate certificate = (X509Certificate) ks.getCertificate("client");
X509Certificate[] certificates = { certificate};
CertificateStore cs = new CertificateStore(certificates);
return cs;
}
但这里有几个问题:1.有一个错误,比如 原因:java.lang.NullPointerException:提供的空名称位于 javax.security.auth.x500.X500Principal.(X500Principal.java:172) 我已检查,subjectDN不为空
2.我不确定这是否是一种方式,我是否应该以某种方式附加私钥来签署消息
这可能是重复的,因为我认为从db读取密钥库没有问题。问题在于WSS4JOutInterceptor,因为它只读取属性如果我没有错的话。假设WSS4JoutinReceptor只读取或接受属性类型,您可以使用适配器模式为属性调整代码。希望能有帮助!这可能是重复的,因为我认为从db读取密钥库没有问题。问题在于WSS4JOutInterceptor,因为它只读取属性如果我没有错的话。假设WSS4JoutinReceptor只读取或接受属性类型,您可以使用适配器模式为属性调整代码。希望能有帮助!这不是一个很有帮助的答案。1.为什么缺少对别名的支持会导致此错误?2.进一步解释扩展CryptoBase。这不是一个非常有用的答案。1.为什么缺少对别名的支持会导致此错误?2.进一步解释扩展CryptoBase。