Я использую пакет SSL на основе PEM в Spring Boot для API MTLS: < /p>
spring.ssl.bundle.pem.server.reload-on-update=true
spring.ssl.bundle.pem.server.keystore.certificate=/etc/spring/ssl/server.crt
spring.ssl.bundle.pem.server.keystore.private-key=/etc/spring/ssl/server.key
spring.ssl.bundle.pem.server.truststore.certificate=/etc/spring/ssl/rootCA.crt
# configure server to use "server" ssl bundle
server.port=8443
server.ssl.bundle=server
server.ssl.client-auth=need
< /code>
Я хочу, чтобы некоторые конечные точки API были доступны без MTL, используя односторонний TLS. Для, например, Для конечных точек HealthCheck. Так что я создаю еще один разъемы Tomcat на порту 8444 для соединения TLS. Это файл @configuration для Tomcat: < /p>
@Configuration
public class TomcatConnectorConfig {
private int tlsPort = 8444;
private final SSLContext sslContext;
public TomcatConnectorConfig(SSLContext sslContext) {
this.sslContext = sslContext;
}
@Bean
public TomcatServletWebServerFactory servletContainer(SSLContext sslContext) {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addAdditionalTomcatConnectors(createTlsConnector(sslContext));
return factory;
}
private Connector createTlsConnector(SSLContext sslContext) {
// Create a new connector using the default HTTPS protocol
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setPort(tlsPort);
connector.setSecure(true);
connector.setScheme("https");
// Create a new SSLHostConfig instance for this connector
SSLHostConfig sslHostConfig = new SSLHostConfig();
sslHostConfig.setSslProtocol("TLS"); // or "TLSv1.2" etc.
SSLHostConfigCertificate certificate = new SSLHostConfigCertificate(sslHostConfig, SSLHostConfigCertificate.Type.RSA);
certificate.setSslContext(sslContext.getDefault()); //This is a mismatch
sslHostConfig.addCertificate(certificate);
// Add the SSLHostConfig to the connector
connector.addSslHostConfig(sslHostConfig);
return connector;
}
< /code>
}
Я пытаюсь использовать SSLContext, предоставленный SSL Bundle здесь: < /p>
@Configuration
public class SslConfiguration {
@Bean
public SSLContext sslContext(SslBundles sslBundles) {
return sslBundles.getBundle("server").createSslContext();
}
}
< /code>
Как мне использовать этот пакет SSL в разъеме Tomcat? Я хочу использовать тот же пакет PEM с этим портом также
Подробнее здесь: https://stackoverflow.com/questions/795 ... -connector