Das Konfigurieren von SSL programmatisch eines Spring -Boot -Servers mit Tomcat ist fehl [Duplikat]Java

Java-Forum
Anonymous
 Das Konfigurieren von SSL programmatisch eines Spring -Boot -Servers mit Tomcat ist fehl [Duplikat]

Post by Anonymous »

Ich versuche, die SSL -Konfiguration eines Spring -Bootes mit einem Tomcat -eingebetteten Server zu konfigurieren. Der Spring Stiefel wird standardmäßig mit einem Tomcat versehen. SSL kann mit den Anwendungseigenschaften wie Keystore -Pfad, TrustStore -Pfad usw. konfiguriert werden. Ich möchte ihn nicht mit Eigenschaften konfigurieren, daher möchte ich es nur programmatisch konfigurieren. Ich habe meine eigene SSL -Bibliothek entwickelt, die ich verwenden möchte, da sie ein paar zusätzliche Funktionen bietet, die ich verwenden muss. In der Vergangenheit habe ich versucht, es zu konfigurieren, fehlgeschlagen, aber ich wechsle entweder Spring Boot mit Jetty oder Netty, um mein Server SSL programmatisch zu konfigurieren. Es war jedoch immer noch in meinem Kopf, es noch einmal zu versuchen. Heute kann ich es immer noch nicht programmatisch konfigurieren, vielleicht kann mir jemand helfen.

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==
Truststore.jks

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);
}
}
Das Kennwort dieser zu Dateien lautet: Geheimnis
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>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post