18
18
19
19
import java .security .cert .X509Certificate ;
20
20
21
+ import io .netty .handler .ssl .SslContextBuilder ;
21
22
import io .netty .handler .ssl .util .InsecureTrustManagerFactory ;
22
23
import reactor .netty .http .Http11SslContextSpec ;
23
24
import reactor .netty .http .Http2SslContextSpec ;
26
27
27
28
import org .springframework .boot .ssl .SslBundle ;
28
29
import org .springframework .boot .ssl .SslBundles ;
30
+ import org .springframework .boot .ssl .SslOptions ;
29
31
import org .springframework .boot .web .server .autoconfigure .ServerProperties ;
30
32
31
33
public class HttpClientSslConfigurer extends AbstractSslConfigurer <HttpClient , HttpClient > {
@@ -52,24 +54,29 @@ public HttpClient configureSsl(HttpClient client) {
52
54
}
53
55
54
56
protected void configureSslContext (HttpClientProperties .Ssl ssl , SslProvider .SslContextSpec sslContextSpec ) {
55
- SslProvider .ProtocolSslContextSpec clientSslContext = ( serverProperties .getHttp2 ().isEnabled () )
57
+ SslProvider .GenericSslContextSpec < SslContextBuilder > clientSslContext = serverProperties .getHttp2 ().isEnabled ()
56
58
? Http2SslContextSpec .forClient () : Http11SslContextSpec .forClient ();
57
59
clientSslContext .configure (sslContextBuilder -> {
58
60
X509Certificate [] trustedX509Certificates = getTrustedX509CertificatesForTrustManager ();
59
- SslBundle bundle = getBundle ();
61
+ SslBundle sslBundle = getBundle ();
60
62
if (trustedX509Certificates .length > 0 ) {
61
63
setTrustManager (sslContextBuilder , trustedX509Certificates );
62
64
}
63
65
else if (ssl .isUseInsecureTrustManager ()) {
64
66
setTrustManager (sslContextBuilder , InsecureTrustManagerFactory .INSTANCE );
65
67
}
66
- else if (bundle != null ) {
67
- setTrustManager (sslContextBuilder , bundle .getManagers ().getTrustManagerFactory ());
68
+ else if (sslBundle != null ) {
69
+ setTrustManager (sslContextBuilder , sslBundle .getManagers ().getTrustManagerFactory ());
68
70
}
69
71
70
72
try {
71
- if (bundle != null ) {
72
- sslContextBuilder .keyManager (bundle .getManagers ().getKeyManagerFactory ());
73
+ if (sslBundle != null ) {
74
+ sslContextBuilder .keyManager (sslBundle .getManagers ().getKeyManagerFactory ());
75
+ SslOptions sslOptions = sslBundle .getOptions ();
76
+ if (sslOptions != null && sslOptions .isSpecified ()) {
77
+ sslContextBuilder .ciphers (SslOptions .asSet (sslOptions .getCiphers ()));
78
+ sslContextBuilder .protocols (sslOptions .getEnabledProtocols ());
79
+ }
73
80
}
74
81
else {
75
82
sslContextBuilder .keyManager (getKeyManagerFactory ());
0 commit comments