2017-02-16 1 views
1

zu lesen Ich integriere CXF Webservices, keine Feder, Nachrichten sind unterzeichnet. Als Anleitung habe ich dieses Tutorial CXF Security verwendet. Ich möchte X509-Zertifizierungen oder den Keystore in der Datenbank speichern.
Ich habe WSS4JOutInterceptor.loadCryptoFromPropertiesFile-Methode überschrieben.Wie Keystore von db

@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; 
    } 

Aber ein paar Probleme hier:
1. wie

ein Fehler Es gibt

Verursacht durch: java.lang.NullPointerException: bereitgestellt null Name bei javax.security.auth.x500.X500Principal . (X500Principal.java:172)

ich habe überprüft und subjectDN ist nicht null
2. ich bin nicht sicher, ob dies eine Art, wie ich zu gehen und soll tach irgendwie private Schlüssel die Nachricht

+0

Dies ist ein Duplikat sein kann, wie http://stackoverflow.com/questions/3184502/storing-public-and-private-keys-in-a-database-or-keystore – fabfas

+0

Ich denke, ich habe kein Problem, den Keystore von db zu lesen. Das Problem ist mit WSS4JOutInterceptor, da es nur Eigenschaften liest, wenn ich nicht falsch bin – ra74

+0

Angenommen, WSS4JOutInnerceptor liest oder akzeptiert nur Eigenschaften, können Sie Ihren Code für Eigenschaften mit einem Adapter-Muster anpassen. Hoffe es würde helfen! – fabfas

Antwort

0
  1. Der Fehler zu unterzeichnen, weil CertificationStore Aliase nicht unterstützt
  2. Der bessere Weg wäre benutzerdefinierte Anbieter zu implementieren, indem CryptoBase erstreckt
+0

Keine sehr hilfreiche Antwort. 1. Warum führt der Mangel an Unterstützung für Aliase zu diesem Fehler? 2. Erkläre weiter über die Erweiterung von CryptoBase. – Cheeso