1818
1919import java .security .cert .X509Certificate ;
2020
21+ import io .netty .handler .ssl .SslContextBuilder ;
2122import io .netty .handler .ssl .util .InsecureTrustManagerFactory ;
2223import reactor .netty .http .Http11SslContextSpec ;
2324import reactor .netty .http .Http2SslContextSpec ;
2627
2728import org .springframework .boot .ssl .SslBundle ;
2829import org .springframework .boot .ssl .SslBundles ;
30+ import org .springframework .boot .ssl .SslOptions ;
2931import org .springframework .boot .web .server .autoconfigure .ServerProperties ;
3032
3133public class HttpClientSslConfigurer extends AbstractSslConfigurer <HttpClient , HttpClient > {
@@ -52,24 +54,29 @@ public HttpClient configureSsl(HttpClient client) {
5254 }
5355
5456 protected void configureSslContext (HttpClientProperties .Ssl ssl , SslProvider .SslContextSpec sslContextSpec ) {
55- SslProvider .ProtocolSslContextSpec clientSslContext = ( serverProperties .getHttp2 ().isEnabled () )
57+ SslProvider .GenericSslContextSpec < SslContextBuilder > clientSslContext = serverProperties .getHttp2 ().isEnabled ()
5658 ? Http2SslContextSpec .forClient () : Http11SslContextSpec .forClient ();
5759 clientSslContext .configure (sslContextBuilder -> {
5860 X509Certificate [] trustedX509Certificates = getTrustedX509CertificatesForTrustManager ();
59- SslBundle bundle = getBundle ();
61+ SslBundle sslBundle = getBundle ();
6062 if (trustedX509Certificates .length > 0 ) {
6163 setTrustManager (sslContextBuilder , trustedX509Certificates );
6264 }
6365 else if (ssl .isUseInsecureTrustManager ()) {
6466 setTrustManager (sslContextBuilder , InsecureTrustManagerFactory .INSTANCE );
6567 }
66- else if (bundle != null ) {
67- setTrustManager (sslContextBuilder , bundle .getManagers ().getTrustManagerFactory ());
68+ else if (sslBundle != null ) {
69+ setTrustManager (sslContextBuilder , sslBundle .getManagers ().getTrustManagerFactory ());
6870 }
6971
7072 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+ }
7380 }
7481 else {
7582 sslContextBuilder .keyManager (getKeyManagerFactory ());
0 commit comments