如何从db读取密钥库

时间:2017-02-16 14:41:42

标签: java web-services cxf x509certificate

我正在集成cxf webservices,没有spring,消息已签名。作为指南,我使用了本教程CXF Security。 我想在db中存储x509认证或密钥库。
我已经覆盖了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:提供null name   javax.security.auth.x500.X500Principal。(X500Principal.java:172)

我已经检查过了且subjectDN不为空 2.我不确定这是否可行,我应该以某种方式附加私钥来签署消息

1 个答案:

答案 0 :(得分:0)

  1. 错误是因为CertificationStore不支持别名
  2. 更好的方法是通过扩展CryptoBase
  3. 来实现自定义提供程序