So rufen Sie HTTPS restful web services mit Spring RestTemplate
Ich bin mit Tomcat7, Spring-framework für ReST-web-services.
Ich bin versucht zu rufen, eine https web service mit Frühjahr RestTemplate.
Ich erhalte die folgende Fehlermeldung:
unable to find valid certification path to requested target; geschachtelte
Ausnahme ist javax.net.ssl.SSLHandshakeException:
Sonne.Sicherheit.validator.ValidatorException: PKIX path building failed:
Sonne.Sicherheit.Anbieter.certpath.SunCertPathBuilderException: nicht
finden eine gültige Zertifizierung Pfad zum angeforderten Ziel
Ich check online bei stackoverflow. Ich habe versucht, das Beispiel-code aus der url:
Zugriff auf Https-Rest-Service mit Spring RestTemplate
Ich konnte es nicht zu funktionieren.
Kann jemand bitte sagen Sie mir, basierend auf den code unten, was muss ich ändern?
Auch kann mir jemand sagen, oder mir die pom.xml Datei, die java-Bibliotheken, die würde ich brauchen?
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.client.RestTemplate;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.journaldev.spring.controller.EmpRestURIConstants;
import com.journaldev.spring.model.CostControlPost;
import com.journaldev.spring.model.Employee;
import com.journaldev.spring.model.RfxForUpdate;
import static org.junit.Assert.*;
import org.apache.commons.codec.binary.Base64;
import javax.net.ssl.*;
import java.io.*;
import java.security.KeyStore;
import java.security.MessageDigest;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
public class TestExample2
{
public static final String SERVER_LIST="https://abc/sourcing/testServices";
@Test
public void testGetListOfServiceNames()
{
try
{
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.exchange(SERVER_LIST,HttpMethod.GET,null,String.class);
assertNotNull(response);
}
catch(Exception e)
{
System.out.println("e:"+e.getMessage());
}
}
}
InformationsquelleAutor user1272936 | 2017-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entweder müssen Sie Zertifikate in Ihrem keystore oder Sie können alle Zertifikate akzeptieren (irgendwie ignorieren Zertifikat-Validierung)
So können Sie die re-Definition des bean-der rest-Vorlage als
Sollten Sie nicht brauchen zusätzliche jars mit Ausnahme für den apache core, client und Abhängigkeiten.
Dies sind die Importe: javax.net.ssl.SSLContext, org.apache.http.conn.ssl.SSLConnectionSocketFactory, org.apache.http.conn.ssl.TrustStrategy. Verwenden Sie einfach den apache http-client
Ich folgte der Anleitung und fügen Sie diesen code, aber ich Stand Fehler:
javax.net.ssl.SSLPeerUnverifiedException: Certificate for <192.168.1.2> doesn't match any of the subject alternative names:[]
Hey@Dariush ich fand einen anderen post, stackoverflow.com/questions/34655031/... wahrscheinlich habe ich etwas versäumt
Beachten Sie, dass diese Antwort wird brechen jeder andere ssl-abhängigen client-Implementierung, die Sie vielleicht in Ihre Komponente.
InformationsquelleAutor user1211