Printemps RestTemplate: SSL handshake échec

Je suis en train d'essayer de consommer une bonne ws avec l'authentification basique. Je n'ai pas importer de cert dans mon fichier de clés. Lorsque j'utilise le plugin chrome Advance Rest client à tester (à l'aide de l'authentification basique avec base64 nom d'utilisateur:pass). Je peux voir la réponse en retour. So far So good.
Mais quand je développe du code Java à consommer ce ws, je reçois SSL handsake échec:

org.springframework.web.client.ResourceAccessException: I/O error: 
Received fatal alert: handshake_failure; nested exception is
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:453)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:377)
at test.Rest.main(Rest.java:37) Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Unknown Source)
at sun.security.ssl.Alerts.getSSLException(Unknown Source)

Ma question est: si le problème est que je n'ai pas d'importation cert à mon fichier de clés, puis à la fois le code Java et le plugin ne devrait pas travailler ensemble. Ici, le plugin fonctionne, mais mon code ne fonctionne pas.
Quelle est la raison? Il ya somethings mal avec mon code?

Soufflet est mon code

RestTemplate restTemplate = new RestTemplate();         
 String plainCreds = "username:pass"; 
 byte[] plainCredsBytes = plainCreds.getBytes(Charset.forName("US-ASCII") );     
 byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); 
 String base64Creds = new String(base64CredsBytes);

 HttpHeaders headers = new HttpHeaders(); 
 headers.add("Authorization", "Basic " + base64Creds);

 ResponseEntity<String> response =  
          restTemplate.exchange("https://url",HttpMethod.GET,new  
                                  HttpEntity(headers),String.class);

Voici le lien vers le fichier de log:(j'ai remplacer mon serveur de nom par XXXXXX)
http://www.filedropper.com/ssllog

Après l'exécution: openssl s_client -showcerts -tls1 -connexion de l'hôte:port

WARNING: can't open config file: /usr/local/ssl/openssl.cnf
CONNECTED(00000164)
8088:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:.\ssl\s3_pkt.c:362:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1452011344
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

et c'est la sortie quand je lance la commande openssl s_client -connect server:port

WARNING: can't open config file: /usr/local/ssl/openssl.cnf
CONNECTED(00000164)
depth=0 C = US, ST = "XXXXXX", L = XXXXXX, O = XXXXXX, OU = xxxxx, CN = XXXXXXXXX.test.intranet, emailAddress = xxxxx@xxxxx
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = US, ST = "XXXXXXX ", L = XXXXX, O = XXXXXX, OU = xxxxxx, CN = XXXXXXXXX.test.intranet, emailAddress = xxxxx@xxxxx
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/C=US/ST=XXXXXXX /L=XXXXX/O=XXXXXX/OU=XXXXX/CN=XXXXXX.test.intranet/emailAddress=xxxxx@xxxxx
   i:/DC=intranet/DC=xxxx/CN=XXXXXX DEV Issuing CA
---
Server certificate
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXX.....
-----END CERTIFICATE-----
subject=/C=US/ST=XXXXXXX /L=XXXXX/O=XXXXXX/OU=XXXXX/CN=XXXXXX.test.intranet/emailAddress=xxxxx@xxxxx
issuer=/DC=intranet/DC=XXX/CN=XXXXX DEV Issuing CA
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: XXXXX, P-256, 256 bits
---
SSL handshake has read 1895 bytes and written 443 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: 568BF22A5CDBF103155264BBC056B272168AE0777CBC10F055705EB2DD907E5A
    Session-ID-ctx:
    Master-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1452012074
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
read:errno=0
Chrome et que votre application peut utiliser différents Java et donc avoir des paramètres différents. Même si Java est, il y a des millions de raisons pour lesquelles cela ne fonctionne pas. Toutefois, il est bon de commencer qu'il travaille à partir de Chrome. Activer SSL de débogage de la JVM, e.g: ajouter -Djavax.net.debug=ssl:handshake:verbose et ajouter le résultat dans votre question, Supplémentaires de débogage arguments sont disponibles ici docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/...
Je voudrais étudier votre serveur, car le journal ne contient pas " ServerHello message que si votre serveur n'est pas en cours d'exécution SSL. Si vous avez openssl essayez de vous connecter là avec openssl s_client -showcerts -tls1 -connect [your_host]:[port]. Voir aussi smartjava.org/content/how-analyze-java-ssl-errors
Merci Michal. J'ai ajouté de sortie pour l'exécution d'openssl. S'il vous plaît aider moi. Je suis nouveau sur ssl et certificat de trucs
Je chose que vous avez omis -tls1 openssl commutateur. Post de sortie avec cette option.
j'ai posté 2 sortie: on est avec openssl s_client -showcerts -tls1 -connexion de l'hôte:port. Un autre est avec openssl s_client -connect server:port.

OriginalL'auteur David | 2016-01-02