相关疑难解决方法(0)

使用restTemplate时需要忽略证书

我正在尝试向以下地址发送请求.证书无效,我想忽略它.我写下面根据我的研究码1,2,但我无法完成它.我使用的是Java 1.7,

https://api.stubhubsandbox.com/search/catalog/events/v3
Run Code Online (Sandbox Code Playgroud)

码

private static final TrustManager[] UNQUESTIONING_TRUST_MANAGER = new TrustManager[]{
    new X509TrustManager() {
        public java.security.cert.X509Certificate[] getAcceptedIssuers(){
            return null;
        }
        public void checkClientTrusted( X509Certificate[] certs, String authType ){}
        public void checkServerTrusted( X509Certificate[] certs, String authType ){}
        public void checkClientTrusted(
                java.security.cert.X509Certificate[] arg0, String arg1)
                throws CertificateException {
            // TODO Auto-generated method stub

        }
        public void checkServerTrusted(
                java.security.cert.X509Certificate[] arg0, String arg1)
                throws CertificateException {
            // TODO Auto-generated method stub

        }
    }
};

public static void main(String[] args) …
Run Code Online (Sandbox Code Playgroud)

java ssl spring-mvc resttemplate

20
推荐指数
4
解决办法
4万
查看次数

如何使用Spring RestTemplate调用HTTPS restful Web服务

我正在使用Tomcat7,Spring框架进行ReST Web服务.我试图使用Spring RestTemplate调用https Web服务.我收到以下错误:

无法找到要求目标的有效证书路径; 嵌套异常是javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径

我在stackoverflow上在线检查.我尝试了url中的示例代码: 使用Spring RestTemplate访问Https Rest服务

我无法让它发挥作用.任何人都可以根据下面的代码告诉我,我需要更改什么?也有人可以告诉我或者向我提供我需要的java库的pom.xml文件吗?

        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()); …
Run Code Online (Sandbox Code Playgroud)

java rest spring resttemplate

14
推荐指数
1
解决办法
4万
查看次数

SSLHandshakeException:收到致命警报:在tomcat 7服务器上设置密码时的handshake_failure

我有一个Tomcat7 Web服务器,我尝试通过将此连接器添加到server.xml文件来配置为接受安全连接:

<Connector SSLEnabled="true"
           acceptCount="100"
           connectionTimeout="20000"
           executor="tomcatThreadPool"
           keyAlias="server"
           keystoreFile="c:\opt\engine\conf\tc.keystore"
           keystorePass="o39UI12z"
           maxKeepAliveRequests="15"
           port="8443"
           protocol="HTTP/1.1"
           redirectPort="8443"
           scheme="https"
           secure="true"
           sslProtocol="TLS"/>
Run Code Online (Sandbox Code Playgroud)

我正在使用使用此命令生成的自签名证书:

%JAVA_HOME%/bin/keytool -genkeypair -keystore c:\opt\engine\conf\tc.keystore -storepass o39UI12z-keypass o39UI12z-dname "cn=Company, ou=Company, o=Com, c=US" -alias server -validity 36500
Run Code Online (Sandbox Code Playgroud)

在客户端,我有一个使用连接服务器的spring应用程序RestTemplate.在应用程序上下文启动时,我以restTemplate这种方式初始化实例:

final ClientHttpRequestFactory clientHttpRequestFactory =
        new MyCustomClientHttpRequestFactory(new NullHostNameVerifier(), serverInfo);
    restTemplate.setRequestFactory(clientHttpRequestFactory);
Run Code Online (Sandbox Code Playgroud)

MyCustomClientHttpRequestFactory类如下所示:

public class MyCustomClientHttpRequestFactory  extends SimpleClientHttpRequestFactory {

private static final Logger LOGGER = LoggerFactory
    .getLogger(MyCustomClientHttpRequestFactory.class);

private final HostnameVerifier hostNameVerifier;
private final ServerInfo serverInfo;

public MyCustomClientHttpRequestFactory (final HostnameVerifier hostNameVerifier,
    final ServerInfo serverInfo) …
Run Code Online (Sandbox Code Playgroud)

encryption ssl tomcat7 resttemplate sslhandshakeexception

7
推荐指数
1
解决办法
2万
查看次数