https URL-Hostname stimmt nicht mit dem allgemeinen Namen (CN) überein, obwohl "disableCNCheck" auf "true" gesetzt ist

8

Ich habe meinen CXF-basierten Client richtig konfiguriert, so dass er das korrekte SSL-Zertifikat für den Server findet, auf dem ich einen Web-Service betreibe:

%Vor%

Aber ... Da das Zertifikat für einen Subdomain-Namen gilt, der sich von dem des Computers meines Servers (entspricht der gleichen IP-Adresse) unterscheidet, erhalte ich den folgenden Fehler:

%Vor%

Also ... Da dies ein Entwicklungs- / Testsystem ist, habe ich genau wie die Nachricht vorgeschlagen (setzen Sie die CXF-Client-TLS-Konfigurationseigenschaft "disableCNCheck" auf "true"):

%Vor%

Plus Ich habe den folgenden Code zur Hauptklasse meines Kunden hinzugefügt (nach dem Vorschlag in diesem Thread >):

%Vor%

Aber ... Ich bekomme immer noch den gleichen Fehler:

%Vor%

Irgendeine Idee warum?

Ich meine, eine der oben genannten Problemumgehungen hätte ausreichen müssen, damit der Client die Zertifikats-URL-Nichtübereinstimmung ignorieren kann, aber in meinem Fall funktioniert weder noch die Kombination .

Warum?

    
Withheld 14.01.2014, 17:41
quelle

2 Antworten

7

Ich habe CXF in mehreren Fällen verwendet, wo

%Vor%

war ausreichend, um die CN-Prüfung zu deaktivieren.

Sind Sie sicher, dass Ihr Client diese Conduit-Konfiguration verwendet? Nach meinem Verständnis muss das Muster des Conduit-Namens in gewisser Weise mit dem Endpunkt-URI übereinstimmen.

Versuchen Sie, den Namen des Conduits wie folgt zu setzen, so dass jeder Endpunkt übereinstimmt und sieht, ob sich das ändert:

%Vor%

Update 2. Januar 2015

Es stellt sich heraus, dass der http-conduit -Konfigurationsname zwei Musterformate hat. Eine umfasst den Namespace und den Portnamen des Dienstes. Das andere unterstützte Format ist ein regulärer Ausdruck, der mit dem URL-Endpunkt abgeglichen wird, der in WSDL zum Erstellen des Clients angegeben wurde.

Zitieren Apache CXF User Guide bezüglich des Elements http-conduit :

  

Der Name enthält den Namespace des Dienstes, den WSDL-Portnamen (als   im Abschnitt WSDL: service der WSDL) und ".http-conduit" gefunden.   Es folgt diese Vorlage:

     

{WSDL Namespace}portName.http-conduit

     

Hinweis: Es ist der PORT-Name, nicht der Dienstname.

     

..

     

Eine weitere Option für   Das name-Attribut ist ein reg-ex-Ausdruck (z. B. " Ссылка : *").   für die ORIGINAL-URL des Endpunkts. Die Konfiguration ist abgestimmt auf   Conduit Creation so die Adresse in der WSDL verwendet oder für die   JAX-WS Service.create (...) Aufruf kann für den Namen verwendet werden.

    
David J. Liszewski 18.01.2014, 18:19
quelle
3

Setzen Sie -Djsse.enableSNIExtension=false in Ihre App-Server-VM-Optionen.

    
Aliti 01.01.2015 13:40
quelle

Tags und Links