HANDSHAKE_FAILURE alerte reçue
Je suis en train d'écrire un client Java (sur weblogic 10.3) pour invoquer un service web sécurisé.
Qui m'a été fourni avec un certificat de client que j'ai installé dans le fichier cacerts, DemoIdentity.jks et DemoTrust,jks
Dans mon weblogic j'ai mis en place keystore comme DemoIdentity et DemoTrust.
Dans weblogic console, j'ai mis
"Les deux sens du Client Cert Comportement:" en tant que "Client Certs demandé mais pas appliquées".
et pour "SSL Port d'Écoute active:" j'ai coché la case.
- Je obtenir le ci-dessous exception lors de l'accès au service web:
] FaultActor [null] Detail [<detail><bea_fault:stacktrace xmlns:bea_fault="http:
//www.bea.com/servers/wls70/webservice/fault/1.0.0">javax.net.ssl.SSLHandshakeEx
ception: [Security:090497]HANDSHAKE_FAILURE alert received from ************** Check both sides of the SSL configuration for mismatches in supported ciphers, supported protocol versions, trusted CAs, and hos
tname verification settings.
at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireException(Unknow
n Source)
at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireAlertReceived(Un
known Source)
at com.certicom.tls.record.alert.AlertHandler.handle(Unknown Source)
at com.certicom.tls.record.alert.AlertHandler.handleAlertMessages(Unknow
n Source)
at com.certicom.tls.record.MessageInterpreter.interpretContent(Unknown S
ource)
at com.certicom.tls.record.MessageInterpreter.decryptMessage(Unknown Sou
rce)
at com.certicom.tls.record.ReadHandler.processRecord(Unknown Source)
at com.certicom.tls.record.ReadHandler.readRecord(Unknown Source)
at com.certicom.tls.record.ReadHandler.readUntilHandshakeComplete(Unknow
n Source)
at com.certicom.tls.interfaceimpl.TLSConnectionImpl.completeHandshake(Un
known Source)
at com.certicom.tls.record.WriteHandler.write(Unknown Source)
at com.certicom.io.OutputSSLIOStreamWrapper.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65
)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at java.io.FilterOutputStream.flush(FilterOutputStream.java:123)
at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.j
ava:158)
at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.
java:363)
at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLC
onnection.java:37)
at weblogic.wsee.connection.transport.TransportUtil.getInputStream(Trans
portUtil.java:85)
at weblogic.wsee.connection.transport.http.HTTPClientTransport.receive(H
TTPClientTransport.java:271)
at weblogic.wsee.connection.soap.SoapConnection.receive(SoapConnection.j
ava:485)
at weblogic.wsee.ws.dispatch.client.ConnectionHandler.handleResponse(Con
nectionHandler.java:179)
at weblogic.wsee.handler.HandlerIterator.handleResponse(HandlerIterator.
java:287)
at weblogic.wsee.handler.HandlerIterator.handleResponse(HandlerIterator.
java:271)
at weblogic.wsee.ws.dispatch.client.ClientDispatcher.handleResponse(Clie
ntDispatcher.java:213)
at weblogic.wsee.ws.dispatch.client.ClientDispatcher.dispatch(ClientDisp
atcher.java:150)
at weblogic.wsee.ws.WsStub.invoke(WsStub.java:87)
at weblogic.wsee.jaxrpc.StubImpl._invoke(StubImpl.java:339)
at sips_cn_contract.PaymentService_Stub.processPaymentWebInit(Unknown So
urce)
at uk.gov.gateway.payments.SipsStartupController.handleRequest(SipsStart
upController.java:73)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.ha
ndle(SimpleControllerHandlerAdapter.java:45)
at org.springframework.web.servlet.DispatcherServlet.doService(Dispatche
rServlet.java:485)
at org.springframework.web.servlet.FrameworkServlet.serviceWrapper(Frame
workServlet.java:342)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServl
et.java:318)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run
(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecuri
tyHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.jav
a:300)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.jav
a:183)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.doIt(WebAppServletContext.java:3686)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:3650)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppS
ervletContext.java:2268)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletC
ontext.java:2174)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.j
ava:1446)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
</bea_fault:stacktrace></detail>]; nested exception is:
Cependant dans firefox, j'ai ajouté le certificat, et quand j'ai vue le wsdl du service web.Il me pousse avec le certificat et après je clique sur ok, il rend le fichier wsdl pour le service web sécurisé.
Quelqu'un a idée de ce que doit je faire pour le client de travail à l'aide de Java?
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement pas l'importation de votre certificat et de la clé correctement. Vous pouvez tester votre fichier de clés par adjonction d'un JUnit ou quelque chose de similaire:
La
javax.net.debug
propriété définie àssl
permettra d'imprimer votre certificat de la chaîne et tous les autres SSL exploitation forestière, ce qui peut être utile. Vous devrez ajouter le certificat, etc. à votre conteneur de l'application comme vous avez déjà en production.Essayer de débogage avec SSL et voir ce qui vient de. Plus que probablement, vous avez juste besoin de configurer weblogic correctement. Vérifiez pour voir si il y a des SSL personnalisé extrémité configurations (c'est à dire lorsque l'URI est /essai/utiliser keyStore XYZ).
Je pense que le vrai problème est que Weblogic n'est pas en utilisant la norme de Soleil HTTPS mise en œuvre fournies par le JDK, mais utilise son propre, ainsi qu'il ressort de cette ligne:
La norme de Soleil de la mise en œuvre de la classe est appelée
javax.net.ssl.HttpsURLConnection
.En conséquence, la politique de certification est à l'intérieur de différentes Weblogic que dans un autonome programme Java. Je viens de découvrir cette débogage d'un problème similaire.
Cette page conseille d'utiliser un Soleil de mise en œuvre au lieu de Weblogic:
http://webtech-kapil.blogspot.com/2010/06/javalangclasscastexception.html
Ils des conseils pour démarrer WL avec l'indicateur suivant:
-DUseSunHttpHandler=true
qui utilise du Soleil de la mise en œuvre du protocole SSL. Cependant, personnellement, je n'ai pas essayé encore.
Merci,
Igor