有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从数据库读取密钥库

我正在集成cxf Web服务,没有spring,消息已签名。作为指导,我使用了本教程CXF Security。 我想在数据库中存储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.有一个错误,比如

Caused by: java.lang.NullPointerException: provided null name at javax.security.auth.x500.X500Principal.(X500Principal.java:172)

我已检查,subjectDN不为空
2.我不确定这是否是一种方式,我是否应该以某种方式附加私钥来签署邮件


共 (1) 个答案

  1. # 1 楼答案

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