SSLを使用する1つの外部HTTP API用にFeignClientを作成しようとしています。 この闘いは、私のロジック、この場合はSSL接続ファクトリで、デフォルトのSpring FeignClientを変更する方法です。ですから、基本的にはHystrix、Sleuth tracingなどのFeignClientのためにSpringが自動的に行うすべての良いことを維持したいと思っています。SpringBoot:FeignClient with SSL(p12)
ありがとうございます。ここで
は私がしようとしたものです:
私はComponentScanの外でカスタム@Configurationを提供しようとしました:
@Configuration
public class CustomFeignConfiguration
{
@Bean
public Feign.Builder feignBuilder()
{
Client trustSSLSockets = new Client.Default(
TrustingSSLSocketFactory.get("server1"),
new NoopHostnameVerifier());
log.info("feignBuilder called");
return Feign.builder().client(trustSSLSockets);
}
...
}
メイドFeignClientは、注釈
@FeignClient(name = "sslClient", configuration = CustomFeignConfiguration.class, url = "https://...")
を通してそれを使います
ここで、 "TrustingSSLSocketFactory"はthisと同様に実装されています。
クライアントをSpringアプリケーションに挿入すると、「feignBuilder」が呼び出され、キーが正常に読み込まれたことがわかります。問題は、作成されたクライアントが実際にcreateSocket呼び出しに指定されたSSLFactoryを使用しないことです。だから私は得る:それは@Bean
自身ではなく、ビルダーの一部だとして
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.8.0_72]
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) ~[na:1.8.0_72]
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023) ~[na:1.8.0_72]
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125) ~[na:1.8.0_72]
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) ~[na:1.8.0_72]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) ~[na:1.8.0_72]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) ~[na:1.8.0_72]
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[na:1.8.0_72]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[na:1.8.0_72]
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513) ~[na:1.8.0_72]
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441) ~[na:1.8.0_72]
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) ~[na:1.8.0_72]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338) ~[na:1.8.0_72]
at feign.Client$Default.convertResponse(Client.java:152) ~[feign-core-9.3.1.jar:na]