Code: Select all
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:229)
at org.springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:43)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
... 14 more
Caused by: java.lang.IllegalArgumentException: standardService.connector.startFailed
at org.apache.catalina.core.StandardService.addConnector(StandardService.java:238)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:282)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:213)
... 16 more
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1077)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.addConnector(StandardService.java:234)
... 18 more
Caused by: java.lang.IllegalArgumentException: SSLHostConfig attribute certificateFile must be defined when using an SSL connector
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:107)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:235)
at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1227)
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1313)
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:617)
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1074)
... 20 more
Caused by: java.io.IOException: SSLHostConfig attribute certificateFile must be defined when using an SSL connector
at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:312)
at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:105)
... 26 more
< /code>
Mein Code sieht so aus: < /p>
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ServerConfig {
@Bean
public ServletWebServerFactory servletContainer(SSLConnectorCustomizer sslConnectorCustomizer) {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addConnectorCustomizers(sslConnectorCustomizer);
return tomcat;
}
}
< /code>
import nl.altindag.ssl.SSLFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SSLConfig {
@Bean
public SSLFactory sslFactory(@Value("${ssl.keystore-path}") String keyStorePath,
@Value("${ssl.keystore-password}") char[] keyStorePassword,
@Value("${ssl.truststore-path}") String trustStorePath,
@Value("${ssl.truststore-password}") char[] trustStorePassword,
@Value("${ssl.client-auth}") boolean isClientAuthenticationRequired) {
return SSLFactory.builder()
.withSwappableIdentityMaterial()
.withSwappableTrustMaterial()
.withIdentityMaterial(keyStorePath, keyStorePassword)
.withTrustMaterial(trustStorePath, trustStorePassword)
.withDefaultTrustMaterial()
.withSystemTrustMaterial()
.withNeedClientAuthentication(isClientAuthenticationRequired)
.build();
}
}
< /code>
import nl.altindag.ssl.SSLFactory;
import nl.altindag.ssl.util.KeyStoreUtils;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.AbstractHttp11Protocol;
import org.apache.tomcat.util.net.SSLHostConfig;
import org.apache.tomcat.util.net.SSLHostConfigCertificate;
import org.apache.tomcat.util.net.SSLHostConfigCertificate.Type;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.context.annotation.Configuration;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.X509TrustManager;
import java.security.KeyStore;
@Configuration
public class SSLConnectorCustomizer implements TomcatConnectorCustomizer {
private final SSLFactory sslFactory;
public SSLConnectorCustomizer(SSLFactory sslFactory) {
this.sslFactory = sslFactory;
}
@Override
public void customize(Connector connector) {
connector.setScheme("https");
connector.setSecure(true);
connector.setPort(8444);
AbstractHttp11Protocol protocol = (AbstractHttp11Protocol) connector.getProtocolHandler();
configureSsl(protocol);
}
private void configureSsl(AbstractHttp11Protocol protocol) {
protocol.setSSLEnabled(true);
SSLHostConfig sslHostConfig = new SSLHostConfig();
sslHostConfig.setSslProtocol("TLS");
sslHostConfig.setHostName(protocol.getDefaultSSLHostConfigName());
configureSslClientAuth(sslHostConfig);
KeyStore trustStore = sslFactory.getTrustManager()
.map(X509TrustManager::getAcceptedIssuers)
.map(KeyStoreUtils::createTrustStore)
.orElseThrow();
sslHostConfig.setTrustStore(trustStore);
SSLHostConfigCertificate certificate = new SSLHostConfigCertificate(sslHostConfig, Type.UNDEFINED);
certificate.setSslContext(new SSLContextWrapper(sslFactory));
sslFactory.getKeyManager().ifPresent(certificate::setCertificateKeyManager);
sslHostConfig.addCertificate(certificate);
String ciphers = String.join(",", sslFactory.getCiphers());
sslHostConfig.setCiphers(ciphers);
String protocols = String.join(",", sslFactory.getProtocols());
sslHostConfig.setProtocols(protocols);
protocol.addSslHostConfig(sslHostConfig);
}
private void configureSslClientAuth(SSLHostConfig config) {
String clientAuth;
SSLParameters sslParameters = sslFactory.getSslParameters();
if (sslParameters.getNeedClientAuth()) {
clientAuth = "required";
} else if (sslParameters.getWantClientAuth()) {
clientAuth = "optional";
} else {
clientAuth = "none";
}
config.setCertificateVerification(clientAuth);
}
}
< /code>
import nl.altindag.ssl.SSLFactory;
import org.apache.tomcat.util.net.SSLContext;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSessionContext;
import javax.net.ssl.TrustManager;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
public final class SSLContextWrapper implements SSLContext {
private final SSLFactory sslFactory;
public SSLContextWrapper(SSLFactory sslFactory) {
this.sslFactory = sslFactory;
}
@Override
public void init(KeyManager[] kms, TrustManager[] tms, SecureRandom sr) {
// not needed to initialize as it is already initialized
}
@Override
public void destroy() {
}
@Override
public SSLSessionContext getServerSessionContext() {
return sslFactory.getSslContext().getServerSessionContext();
}
@Override
public SSLEngine createSSLEngine() {
return sslFactory.getSSLEngine();
}
@Override
public SSLServerSocketFactory getServerSocketFactory() {
return sslFactory.getSslServerSocketFactory();
}
@Override
public SSLParameters getSupportedSSLParameters() {
return sslFactory.getSslParameters();
}
@Override
public X509Certificate[] getCertificateChain(String alias) {
return sslFactory.getKeyManager()
.map(keyManager -> keyManager.getCertificateChain("server"))
.orElseThrow();
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return sslFactory.getTrustedCertificates().toArray(new X509Certificate[0]);
}
}
< /code>
Ich kann die Keystores hier nicht als Datei freigeben, daher habe ich sie in eine base64 codierte Zeichenfolge konvertiert. Wenn Sie es also an Ihrer Seite versuchen möchten, k ö n n e n S i e d i e b i n ä r e D a t e i a u s d e r S e i t e e n t s c h l ü s s e l n u n d e r s t e l l e n . < c o d e > M I I O c w I B A z C C D i w G C S q G S I b 3 D Q E H A a C C D h 0 E g g 4 Z M I I O F T C C B W E G C S q G S I b 3 D Q E H < b r / > A a C C B V I E g g V O M I I F S j C C B U Y G C y q G S I b 3 D Q E M C g E C o I I E 8 z C C B O 8 w K Q Y K K o Z I h v c N < b r / > A Q w B A z A b B B T U 8 Z e q K O o F 7 P m c 7 P r K 1 Q 9 h R T 8 F R A I D A M N Q B I I E w E I / j c E K k E n e v x H l < b r / > q O D L e I H t T 7 2 g r + S 3 4 J T 9 9 n U e S O y q d W k o 7 m N 7 i l Z Q 8 4 s c J m d v Q o a J Y H n j G 7 h L P x p i < b r / > g h E Y F w M y A 5 Z R c p d q K o R n C y I 1 S B z e N I 1 x h o 5 p x p j u k i v L d X L B x m P r y k N p a w t k B N g N < b r / > 6 o a m N 7 w I 4 3 7 I s n u n v t B M r j o h Q Z l v f 0 / 5 X 4 D B a B l x X B 3 T + Z j p Q c q d G f A 7 L T N s d l H t < b r / > F 2 / p z o l J Y c 8 B F B B E G M F N B b 3 N P Q 9 1 t B A N P v D M I a a E E b Y 5 G 7 z J X + B A K q n N 3 D m U r f E a < b r / > U N y j Y d C d 8 a p D f H V 6 S e z u K l e 5 n D z 4 K G p n s T f w A N S D G L i y 9 S K o 4 T v + E 1 n U M t A 2 4 y b 4 < b r / > 5 4 L 0 C f C n o T T t N a q G R J 0 K M 6 a 3 x H 9 2 I m j D 6 K a O H l M j w U r l O c T 6 H O z Q k 5 M k n v j v 8 B / B < b r / > 1 r i x V l C 6 9 c t y S S M H 3 e Z G 6 v d c V 2 6 7 Z R 3 L 1 w H Z S C t u X b C H g y l b v G Y 1 N / 5 J C W b Y 7 p o T < b r / > e Q 4 5 S S s D x z 1 t g y 4 H v 6 l r j r Q + c 1 + f m 7 a C Y m F E H 3 i T / x p X 0 B d D + e q Q 8 e n z b P O u Y v L 7 < b r / > 1 H s Q o 8 f 1 X I z t 6 Q H n G q v Z 3 Q U K J + f J L q r 7 D i H w V W 1 w t 3 S 3 D e a 7 S C y y + U m M 5 b o / R l U G < b r / > c l d E c 6 m k T C A x r l 3 B M M 8 H 0 S h M g 3 W y N k a F / C n Z J h U A H C / D Y z y a x 0 U V J k 8 / Q / i 9 q j n Y < b r / > b h O 2 E 0 f C e 9 7 T 4 8 w P V s w M G 4 L u E 0 I H K b H r 6 n B a X 4 h h Z c f 3 C B j t J v K d f F v G w t s w y l q Y < b r / > p F m 8 J W Z i E q N m Z N 6 n R P 7 E Y 8 x k m n R I p 6 L N 4 v e 0 i 3 v k B o l N 3 5 G 5 8 k j w X j S K F i r l G u J V < b r / > A z 6 k + r 0 E j q Q r H s j 6 o t e V T 7 t A I 6 B z x o d n Y 5 m o o M r A t n t t Y S 7 v l 3 M I X k p Y B z w e 0 K F M < b r / > 2 N W X w L u g 5 Q v Q 0 u A E d X 9 a P R / l y 7 S P 5 X z Q p Q K d i i x v A Q R Z 2 Z x t f o 3 2 w G q V Q a w b K E K E < b r / > p f V s Q K 9 a g x 7 o f G b U i z t V X Y e m 9 j V q / g v z A r o 1 X F H 9 4 P t + L g 1 i V m i 2 L Z t 6 m l j H H / e C < b r / > a m M z q G 7 t d 3 G 1 h K U 3 s K Y U a I V g b y J w + L S l X b r c b V 5 v s L e p O F V + l H 9 S x o X J z z d x Y r A s < b r / > c w 0 3 3 w e L w L T k Q U P g S j Y y 0 X T K I Z q I R Z M 5 o K D T 6 w E z N 1 Q q v Q J e 5 9 O 6 N 3 f l 1 b H 9 u Z u j < b r / > Y F 1 i u x L K t d b / a a w h t c k p 3 i R E p q T Y b I Z Q E M 4 c D r P y E l k b B U w 3 4 k j / T Y n R E 0 o o o r D I < b r / > L 5 y P 3 W T a a w L l s L F P l w n I q S 4 b j Q C k f b 8 P P B V J S m k + v 2 K 1 6 r S l x n u 2 z j I N e 1 g V b e L l < b r / > g s u K L 1 I W C 7 y B d b E 0 s q V V g i 9 T i S z Z g l N M Q I a L u A + w m Y 8 U 7 j H z 6 9 7 N T e W L / X U n f 5 + T < b r / > r M m Y j Q o 0 G W L D J q 1 m O m a S U x K o 0 k x 2 0 g o 0 d M f O N I i R a K l f F v x p I F 9 a L h f S G S F W M s 3 g < b r / > i w d + 9 J z e n c x / g t m 8 R b 9 U 1 o D M E y c 6 G w U 5 J H i w m D L Q 5 e 1 P 6 j s Z P T L G d i U S Q d 6 t d U + u < b r / > P s + 0 n C V w a w a H 9 O 1 g r D w H R K Q c w 7 D y + L K C j y 3 P S z b E P V a l Y 7 M m j J m L A / j S Q 0 k U A r 9 j < b r / > B + X V G 0 Q y q B S l u B U m l O a f h d n R h 8 n k l d I i T Z i W d f U M T P g 2 h J G d F q l Z A + k M I 6 O 9 V 4 a W < b r / > y w / j l H R 8 U 0 7 6 M C 1 v d r S f + y s Q K / G F 0 i p c v n d H 1 C i 3 o / 3 q g U N G Y i J y o h 2 j H 5 F A n s J l < b r / > Y e o B l c w x Q D A b B g k q h k i G 9 w 0 B C R Q x D h 4 M A H M A Z Q B y A H Y A Z Q B y M C E G C S q G S I b 3 D Q E J < b r / > F T E U B B J U a W 1 l I D E 2 M j A w O T g 5 N D E w N D I w g g i s B g k q h k i G 9 w 0 B B w a g g g i d M I I I m Q I B < b r / > A D C C C J I G C S q G S I b 3 D Q E H A T A p B g o q h k i G 9 w 0 B D A E G M B s E F F 7 A 5 A + E 8 4 W m D P d 2 C y s 2 < b r / > P D d J B 5 Z G A g M A w 1 C A g g h Y N Q 5 V q i E W h L W X C h J B 1 0 s g 9 t T G j 6 9 Y w 0 j U 1 b B J K a K 1 0 x O v < b r / > a p P E l D n k b 1 3 s D k + W t 1 5 V c F 6 i 9 u v v m E X j a k f s W C T 4 V m R 0 c o i N L C t q B C m I X T l S z K c N < b r / > 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
O3MCAwGGoA==
Code: Select all
MIIEjgIBAzCCBEcGCSqGSIb3DQEHAaCCBDgEggQ0MIIEMDCCBCwGCSqGSIb3DQEH
BqCCBB0wggQZAgEAMIIEEgYJKoZIhvcNAQcBMCkGCiqGSIb3DQEMAQYwGwQUCQPL
V1YP9wunGMWFyv1BwcRTIAACAwDDUICCA9jrocMHqNhm8aHENyLPmEi8qSuSPdut
++OBZvYRI5Bb2fFwye3dsoo9xEcSpDTcjp3cCiPPnGzcaWyvOvyTFtGr7AuUISte
qI2bfHd+bR1e7KhC4a8xZDhpsn7TmYTOHGhHJi7W4Yaw6UbgYhzfE++KpqNMfWBk
t4/4V2n3BNzShtxXDBw9CmT1Fdcv1lJ1j5YWKdgD0/p59ccEZHtiUvY6QOROBfjq
oI6kkMzW/mDJqQDKowLsW2O/UbPaRC1B8Ew0NSlHWhxaU347UFsotW8iKuXVnei0
gPiPfBFSuZ24MFaz6XENgEZcnNCJBeeK/MGma8i1rOADKbEaErzvlwBNm8BWtlC3
Ix4akym2XSy3pqFJrP+1cJJONwsI766IL72PUyXTBRtKEaqSd6jZZGkiyTPsiiK6
G3apckGnKpgJLyR6hrUd2SC8bwf92waRne9VihA0O4CovO9G0ab6ud02bEISVQAt
/n+lnU6FmjK3tGy1P/Kpx1vomkmZkdWqE56dvAQv5DRV7EZQ9TJU8FoAyP4E5RWD
1AQi7uDA233e1Wv4rYzWhwm/0XeFsdKw/N3rjmeNilgG4/KwSFFkl53fNECDDEmS
czcEkA99JU6nJBCuFF8kn0yVXTh+8ezgdSiT8LIUtqbldzKR8uMXFlzCMOCdJc21
cBC7DX9LA+Dz/pkcEj1smtDDSv+zM+DbEA4iJZBlF68xqiZzhrWcmbdtSKN5iUN/
kkLELUUjO76OIdxXILW2GHLHSe01fbqpHeY9NC732WmF329+ucODzCq9BjxARpAm
bCEX8tbcOrCqm3947JuSbgW6CxzDd2gzmYoE6d4LSfWLRgQ4SdLpgieVhfbsunBk
lnvCrnsa/VAQnEMZEzWCgvRAcuRs6bPvUXXFPwrz8OvQoPmdDRA4uWYfhEZZJjq4
uRGQRt+Bf4v5H1e2yzxSfRKlecJlhpVMyZtNsWTaNgZFX+c1SfzXXZGGMgLBEh9t
wLFdDWA848eXP97te7boqusR/UTXd6hLDmU5bb5NmjzY92aEK3LfIeLhFlKjWQKF
FooNxvKA/jyqUt/LxffAxK4co8ivyLzOMdHsPsqTjpkqjro5RgnYJTJWhBLMois5
sJej6EphOUzBMeEwgdlEs3pbT3/yp8QrhYKUG2HjkUVE2GKVwWNcjRfguGGK8MYC
B3ztnwPeAblpaPi4aQY55maYGXR3SPTAX2MVGScBfL8GhDZGr/yf7441wi6YntOH
CYts3VW/0zHAXNTaycdUTSMg9f7O312aYrk59Hd5Yfiw1StzMtdJMnMxlOdgTP33
w+wwPjAhMAkGBSsOAwIaBQAEFDdfecmJ7H2HFI93DLhyZ4r8Mx2iBBT/uNLzzuIO
SZI0e5jSFcFmOoYSvwIDAYag
< /code>
Diese beiden base64 codierten Zeichenfolgen können mit dem Snippet -Bellow in Binärdateien tranformiert werden. Bitte stellen Sie sicher, dass der leere Inhalt durch die obigen Base64-codierten Zeichenfolgen ersetzt.import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Base64;
public class Base64DecoderUtils {
public static void main(String[] args) throws IOException {
String identityContentAsBase64Encoded = "";
String trustStoreContentAsBase64Encoded = "";
Path identityPath = Paths.get("/path/to/identity.jks");
Path trustStorePath = Paths.get("/path/to/truststore.jks");
byte[] decoded = Base64.getDecoder().decode(String.join("", identityContentAsBase64Encoded.split(System.lineSeparator())));
Files.write(identityPath, decoded, StandardOpenOption.CREATE);
decoded = Base64.getDecoder().decode(String.join("", trustStoreContentAsBase64Encoded.split(System.lineSeparator())));
Files.write(trustStorePath, decoded, StandardOpenOption.CREATE);
}
}
Meine Anwendungseigenschaftsdatei lautet:
server:
port: 8443
ssl:
client-auth: true
keystore-path: identity.jks
keystore-password: secret
truststore-path: truststore.jks
truststore-password: secret
< /code>
Ich verwende die folgenden Abhängigkeiten: < /p>
io.github.hakky54
sslcontext-kickstart
8.1.7
org.springframework.boot
spring-boot
2.7.5
org.springframework.boot
spring-boot-starter-web
2.7.5
< /code>
Aktualisieren Sie 2023-10-23 < /h1>
Die angegebene Konfiguration wie KeyManager oder SSLContext wird ignoriert. Es scheint, als wäre es nie die Absicht der Entwickler/Wartenden, eine solche benutzerdefinierte Konfiguration zu ermöglichen. Ich habe hier eine Pull -Anfrage geöffnet, um sie in Tomcat zu aktivieren: https://github.com/apache/tomcat/pull/673
Ich weiß jedoch nicht>