Spring Cloud用FeignClient调用https接口的问题

一个Spring Cloud的工程,使用了Eureka注册服务,使用FeignClient在服务间调用接口,起了三个服务,一个叫Registry,是Eureka Server,还有web和master服务,web服务调用master服务提供的接口。
开始时使用http协议,web服务可以正常调用master的接口。
后来改用https协议,用命令生成的证书,添加到了三个项目里,并且把证书从浏览器导出cer文件,加入了jdk的信任列表文件里,但是web调用master接口总是报错no subject alternative names present,应该是证书校验的错
所以在项目里加了配置,忽略证书校验,配置如下
@Bean
@ConditionalOnMissingBean
public Client feignClient(CachingSpringLoadBalancerFactory cachingFactory,
                          SpringClientFactory clientFactory) throws NoSuchAlgorithmException, KeyManagementException {
    SSLContext ctx = SSLContext.getInstance("SSL");
    X509TrustManager tm = new X509TrustManager() {
        @Override
        public void checkClientTrusted(X509Certificate[] chain,
                                       String authType) throws CertificateException {
        }
        @Override
        public void checkServerTrusted(X509Certificate[] chain,
                                       String authType) throws CertificateException {
        }
        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    };
    ctx.init(null, new TrustManager[]{tm}, null);
    return new LoadBalancerFeignClient(new Client.Default(ctx.getSocketFactory(),
            new HostnameVerifier() {
                public boolean verify(String hostname, SSLSession sslSession) {
                    return true;
                }
            }),
            cachingFactory, clientFactory);
}

启动服务器后,web调不通master的服务了,报的是404错误,经过单步调试,发现,Eureka上注册的master服务是8443端口(项目里设置就是8443端口),但是在web项目里执行完ribbon的selectServer后返回的server是443端口,导致调用返回404
有大神知道是怎么回事吗?感觉我配置的socketFactory和HostnameVerifier和ribbon的负载均衡之间并不应该有什么太大的关联,为什么会导致调用服务时获取的服务器端口不对呢?如果这两个参数传空,进去,还是会报证书校验失败的错,也就是说端口获取是没问题的
 
已邀请:

要回复问题请先登录注册