Ich möchte Webservice-Anforderungen unter Verwendung von Apache CXF und WSS4J signieren. Soweit ich weiß, würde ich einen JKS-Speicher benötigen, der das Zertifikat enthält, das ich zum Signieren verwenden möchte. Es gibt die Anforderung, ein X.509-Zertifikat aus dem Windows-Zertifikatspeicher verwenden zu können. Das Zertifikat muss zum Zeitpunkt der Unterzeichnung der Webservice-Anfrage aus dem Geschäft gelesen werden. Ich weiß, wie man auf das Geschäft zugreift und das Zertifikat erhält. Aber wie kann ich es zum Signieren anstelle des Zertifikats aus meinem eigenen JKS Store verwenden?Webservice-Sicherheit und Windows-Zertifikate
Antwort
Der KeyStore muss kein JKS sein. Sie könnten Ihren eigenen JCA-Provider schreiben und KeyStoreSpi implementieren und auf den Windows-Zertifikatspeicher zugreifen.
Haben Sie meine Antwort nützlich gefunden? – adrianboimvaser
Betrachten Sie this, die erläutert, wie Sie den Windows-Schlüsselspeicher verwenden. Dann müssen Sie CXF für die Verwendung dieses Keystores konfigurieren.
Wie kann ich CXF mitteilen, dieses Geschäft zu verwenden? – tobiasbayer
Es scheint keinen guten Weg zu geben, es zu tun. Es gibt einen Vorschlag, eine Java-COM-Bridge hier zu verwenden: http://objectmix.com/java/76948-accessing-certificates-windows-system-stores-java.html. Diese Antwort deutet darauf hin, dass Sie in JNI Hölle stecken bleiben: https://lists.owasp.org/pipermail/owasp-webscarbab/2010-October/001123.html – rtperson
Wenn sie jedoch die Zertifikate in Active Directory speichern, dann ist es sind über LDAP und JNDI erreichbar. Das würde ich empfehlen. Lassen Sie mich wissen, ob Sie einen Beispielcode wünschen, und ich werde ihn als Antwort veröffentlichen. – rtperson
Nur gefunden, dass es möglich ist, mit MerlinDevice
Klasse zu erreichen. Das ist, wie ihre getan:
1) Konfigurieren von Eigenschaften für WSS4JOutInterceptor
:
Map<String,Object> outProps = new HashMap<String,Object>();
outProps.put(WSHandlerConstants.ACTION, "Signature");
outProps.put(WSHandlerConstants.USER, "Friendly_name_of_your_certificate");
outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, StupidCallback.class.getName());
outProps.put(WSHandlerConstants.SIG_PROP_FILE, "client_sign.properties");
WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
2) Die client_sign.properties
Datei sieht wie folgt aus:
org.apache.ws.security.crypto.provider=org.apache.wss4j.common.crypto.MerlinDevice
keystore.provider=SunMSCAPI
cert.provider=SunMSCAPI
keystore.type=Windows-MY
truststore.type=Windows-ROOT
3) Und StupidCallback
nur konstante String als zurück Passwort (sein Wert spielt keine Rolle):
public class StupidCallback implements CallbackHandler
{
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException
{
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.setPassword("password");
}
}
Das ist alles.
- 1. SQL Server UND UND ODER UND UND
- 2. Unterschied zwischen - und - oder 'und' oder "und"
- 3. SubSonic "Oder" und "UND"
- 4. "und" und Tail-Rekursion
- 5. SOX und Ein- und Ausblenden
- 6. QOpenGLWidget und glReadPixels und Tiefenpuffer
- 7. Flasche und Skalierung und Gleichzeitigkeit
- 8. Realm: kombinieren "oder" und "und"
- 9. ArrayList und String [] UND Objekt []
- 10. Python wenn Bedingung und "und"
- 11. Schienen und Markdown und Editor
- 12. Jack und Jill und destinationDir
- 13. Excel Multiple IF und UND
- 14. Spring und JSF und JPA
- 15. Kopf- und Fußzeile und Freemarker
- 16. Android und onSaveInstance und Restore
- 17. Hibernate und Transaktionen und Tabellensperren
- 18. „Und“ und „Oder“ auf NSPredicates
- 19. reagieren und setState und Autocomplete
- 20. Codierung und Decodierung mit PHP und JavaScript und Datenattribute Validierungs
- 21. Leistung und Sortierung und eindeutige eindeutige zwischen mysql und php
- 22. Batch-Datei umbenennen und verschieben und Variablen und Dinge
- 23. Mit 'und' und 'oder' Logik mit Dropdown-Menüs und MixItUp
- 24. bash: Umleitung (und hängen) stdout und stderr Datei und Terminal und die richtige Exit-Status
- 25. Warum scheinen NSString und NSLog% C und% lc (und% S und% ls) unterschiedlich zu behandeln?
- 26. Breite und Länge, x und y und Unterschiede beim Plotten: geosphere und ggmap
- 27. User Controls und JavaScript und Masterseiten
- 28. HTTP GET und POST Semantik und Einschränkungen
- 29. WMODE und Flash Video - Stabilität und Leistung
- 30. Gunicorn und Django mit Upstart und Nginx
Zertifikate werden nicht zum Signieren verwendet, Schlüssel sind. Haben Sie Zugang zu einem privaten Schlüssel? In diesem Fall können Sie tatsächlich etwas unterschreiben. –