Axis2 Cipher Suite und Protocol einschränken

bartholodeus

Mitglied
Hallo zusammen,

mein Client muss auf HTTPS mit Server- und Clientzertifikat umgestellt werden. Das habe ich auch schon gemacht und die Kommunikation mit einem Test-Webservice in einem Tomcat deployed. Das funktioniert auch einwandfrei.

Die Anforderung ist, ausschließlich die Cipher Suite TLS_RSA_WITH_AES_256_CBC_SHA und das Protokoll TLSv1.2 zu verwenden. Auf Serverseite war das nicht schwer. Mein Connector ist wie folgt definiert:
[XML]<Connector SSLEnabled="true" sslProtocol="TLS" ciphers="TLS_RSA_WITH_AES_256_CBC_SHA" clientAuth="true" keystoreFile="pathToKeystore" keystorePass="keypass" maxThreads="150" port="8444" protocol="HTTP/1.1" scheme="https" secure="true" truststoreFile="pathToTruststore" truststorePass="keypass"/>[/XML]

Wie kann ich denn im Code des Clients die akzeptierten Cipher Suite und das Protokoll auf TLS_RSA_WITH_AES_256_CBC_SHA und TLSv1.2 einschränken? Hintergrund ist, dass der Server mehrere Suites anbietet; man soll allerdings die stärkste Verschlüsselung wählen, die möglich ist.

Ich habe Axis2 v1.4.1 benutzt, um den Stub zu generieren.

Vielen Dank für eure Hilfe.

Bart
 

bartholodeus

Mitglied
Danke für den Hinweis, Keo.

Ich habe das Problem wie folgt gelöst:

Ich habe den Sourcecode der org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory genommen, die das Interface org.apache.commons.httpclient.protocol.ProtocolSocketFactory implementiert und diese Methode hinzugefügt:

Code:
private Socket setCipherSuite(Socket socket) {
		if (socket instanceof SSLSocket) {
			((SSLSocket) socket)
					.setEnabledCipherSuites(new String[] { ApplicationConfiguration
							.getString("MSTVEnabledCipherSuites") });
		}
		return socket;
	}

In der Konfiguration kann man dann alle ChipherSuites durch Komma getrennt eintragen, die man unterstützen möchte, z.B. TLS_RSA_WITH_AES_256_CBC_SHA.

Bei allen createSocket Methoden habe ich diese Methode dann aufgerufen.

Code:
	public Socket createSocket(String host, int port) throws IOException,
			UnknownHostException {
		return setCipherSuite(SSLSocketFactory.getDefault().createSocket(host,
				port));
	}

Diese Klasse wird dann wie in dem Tutorial (siehe Link von Keo) gesetzt.

Ob das jetzt die sauberste Lösung ist, weiß ich nicht, aber sie funktioniert.

Grüße, Bart
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Axis2 Dateien lesen und schreiben - Pfade SOA 1
L [AXIS2] OutOfMemory Exception bei Übertragung von größerer Datei via Webservice SOA 3
C SSL in Tomcat mit Axis2 SOA 4
K Axis2 SOAP Logging via Client SOA 2
T Verwendung von Eclipse Projekten im Axis2 Webservice SOA 8
S AXIS2 Webservice: Umgang mit komplexen Datentypen SOA 5
S Axis2 Fault - Wie im Client auslesen? SOA 6
S Axis2 / Rampart - XML-Datei verschlüsseln & versenden SOA 14
J Axis2 und wiederverwenden der Serverobjekte SOA 3
H Axis2 dynamische URL zu WSDL SOA 2
H Axis2: XML<->DB SOA 2
T Axis2 Problem: leeres Array? SOA 1
S Axis2 MustUnderstand problem mit Boolean SOA 9
F Axis2 große Strings streamen SOA 3
A Axis2 oder 1 Ntlm Authentification SOA 5
J Axis2 und Tomcat SOA 4
T Hat AXIS2 noch Zukunft und wie REST implementieren? SOA 6
R AXIS2 u. Eclipse (Galileo) Fehler bei Serverstart SOA 2
G Stub generieren (WSDL=Axis1.4) (WSDL2JAVA=Axis2) SOA 11
H Axis2 Deployment SOA 5
R SOAP Nachrichtenaustausch zwischen Axis2-WSs SOA 5
S Exception in axis2 java2wsdl ant Task SOA 1
N Request-XML-String -> AXIS2 -> WSDL-Check -> Respon SOA 2
G Axis2 Properties SOA 6
N Axis2: Binärdateien übertragen mit JWS/RPC SOA 2
M Axis2 vs XFire vs JAX-WS SOA 4
N Axis2 - hibernate.cfg.xml - wohin? SOA 6
K Axis2 Service / deploying to Tomcat 5.5.25 / web.xml SOA 5
F Axis2 und Listen SOA 3
I Axis2 mit SSL verschlüsseln SOA 4
N Axis2 - Cliententwicklung SOA 3
G axis2 rampart 1.3 SOA 1
K Webservices mit Axis2 SOA 2

Ähnliche Java Themen

Neue Themen


Oben