【问题标题】:HTTPS and Spring Cloud Contract Stub RunnerHTTPS 和 Spring Cloud Contract Stub Runner
【发布时间】:2016-12-22 22:29:37
【问题描述】:

通过负载平衡的 RestTemplate 发送 https 请求时,我收到以下堆栈跟踪:

原因:org.springframework.web.client.ResourceAccessException:“https://securityService/oauth/token”的 POST 请求上的 I/O 错误:无法识别的 SSL 消息,明文连接?嵌套异常是 javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 在 org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:633) 在 org.springframework.web.client.RestTemplate.execute(RestTemplate.java:580) 在 org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:407) 在 org.springframework.web.client.RestTemplate$$FastClassBySpringCGLIB$$aa4e9ed0.invoke() 在 org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 在 org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 在 org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85) 在 org.springframework.cloud.netflix.metrics.RestTemplateUrlTemplateCapturingAspect.captureUrlTemplate(RestTemplateUrlTemplateCapturingAspect.java:33) 在 org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629) 在 org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618) 在 org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 在 org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 在 org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655) 在 org.springframework.web.client.RestTemplate$$EnhancerBySpringCGLIB$$dfb025c8.postForEntity() 在 com.acme.SecurityService.getBearerToken(SupportServiceImpl.java:62) ... 33 更多 原因:javax.net.ssl.SSLException:无法识别的 SSL 消息,明文连接? 在 org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:78) 在 org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) 在 org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) 在 org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:93) 在 org.springframework.cloud.client.loadbalancer.RetryLoadBalancerInterceptor$1$1.apply(RetryLoadBalancerInterceptor.java:70) 在 org.springframework.cloud.client.loadbalancer.RetryLoadBalancerInterceptor$1$1.apply(RetryLoadBalancerInterceptor.java:62) 在 org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:98) 在 org.springframework.cloud.client.loadbalancer.RetryLoadBalancerInterceptor$1.doWithRetry(RetryLoadBalancerInterceptor.java:60) 在 org.springframework.cloud.client.loadbalancer.RetryLoadBalancerInterceptor$1.doWithRetry(RetryLoadBalancerInterceptor.java:48) 在 org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:276) 在 org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:157) 在 org.springframework.cloud.client.loadbalancer.RetryLoadBalancerInterceptor.intercept(RetryLoadBalancerInterceptor.java:48) 在 org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:85) 在 org.springframework.cloud.sleuth.instrument.web.client.TraceRestTemplateInterceptor.response(TraceRestTemplateInterceptor.java:59) 在 org.springframework.cloud.sleuth.instrument.web.client.TraceRestTemplateInterceptor.intercept(TraceRestTemplateInterceptor.java:53) 在 org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:85) 在 org.springframework.cloud.netflix.metrics.MetricsClientHttpRequestInterceptor.intercept(MetricsClientHttpRequestInterceptor.java:68) 在 org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:85) 在 org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:69) 在 org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) 在 org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) 在 org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:619) ... 50 更多

如何配置 Spring Cloud Contract Stub Runner 以使我的 Spring Cloud 存根能够通过 HTTPS 访问?

【问题讨论】:

  • 试图弄清楚如何使用 Spring Cloud Contract Sub Runner 配置执行the Wiremock site 上记录的内容。

标签: spring-cloud-contract


【解决方案1】:

这里有一个示例,说明如何使用 SSL - https://github.com/spring-cloud/spring-cloud-contract/blob/master/samples/wiremock-undertow-ssl/src/main/resources/application.properties 设置 Spring Cloud Contract Wiremock。您可以对普通的 Wiremocks 使用类似的设置。另外,由于您使用的是 Spring Cloud,请记住将工件 id 映射到服务名称 https://cloud.spring.io/spring-cloud-contract/1.0.x/spring-cloud-contract.html#_stub_runner_spring_cloud

【讨论】:

    猜你喜欢
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多