webentwicklung-frage-antwort-db.com.de

Spring boot after https: Der Tomcat-Connector, der für die Überwachung von Port 8444 konfiguriert ist, konnte nicht gestartet werden.

Ich habe eine Anleitung zur Aktivierung von https in Spring Boot befolgt. Die Anwendung arbeitete zuvor auf https: // localhost: 8080

Ich habe einen keystore.jks erstellt, der sich im selben Verzeichnis wie mein application.properties befindet und nun wie folgt aussieht:

# Define a custom port instead of the default 8080
server.port = 8444
# Tell Spring Security (if used) to require requests over HTTPS
security.require-ssl=true
# The format used for the keystore
server.ssl.key-store-type:PKCS12
# The path to the keystore containing the certificate
server.ssl.key-store=keystore.p12
# The password used to generate the certificate
server.ssl.key-store-password=<somepassword>
# The alias mapped to the certificate
server.ssl.key-alias=Tomcat

Wenn ich nun die Hauptmethode zum Starten der Spring-Boot-App ausführen, wird Folgendes ausgelöst:

Description:

The Tomcat connector configured to listen on port 8444 failed to start. The port may already be in use or the connector may be misconfigured.

Action:

Verify the connector's configuration, identify and stop any process that's listening on port 8444, or configure this application to listen on another port.

Der Port wird nicht verwendet, daher muss es eine falsche Konfiguration sein.

Ich bin nicht sicher, was ich ändern soll. Es ist eine einfache SPA-App. Spring dient lediglich einer index.html und hat einen einzigen REST -Endpunkt. Wie sollte Tomcat/spring konfiguriert werden, um in diesem Fall https zu akzeptieren und ohne Fehler zu starten?

7
cbll

Ich hatte auch das gleiche Problem und konnte es beheben. Mein Problem war das Erzeugen der keystore.p12-Datei.

Wenn Sie über eine Zertifikatsdatei und eine private Schlüsseldatei verfügen, können Sie mit dem folgenden Befehl eine keystore.p12-Datei erstellen.

openssl pkcs12 -export -in <mycert.crt> -inkey <mykey.key> -out keystore.p12 -name <alias>

Sie werden aufgefordert, ein Kennwort einzugeben. Dort können Sie ein beliebiges Kennwort eingeben. Wenn die Keystore-Datei erstellt wurde, kopieren Sie sie in das Verzeichnis, in dem sich Ihre .jar-Datei befindet.

Es folgt eine Funktionsbeispielkonfiguration.

server.port=8443
security.require-ssl=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=file:keystore.p12
server.ssl.key-store-password=<password>
server.ssl.key-alias=<alias>

Beachten Sie den Schlüsselspeicherdateipfad file:keystore.p12, wenn er sich in demselben Verzeichnis wie die ausführbare .jar-Datei befinden soll.

6
Johna

Ich habe das gleiche Problem mit der folgenden Konfiguration gelöst

# Define a custom port instead of the default 8080
server.port=8443
# Tell Spring Security (if used) to require requests over HTTPS
security.require-ssl=true
# The format used for the keystore 
server.ssl.key-store-type=PKCS12
# The path to the keystore containing the certificate
server.ssl.key-store=src/main/resources/keystore.p12
# The password used to generate the certificate
server.ssl.key-store-password=root0

Ich entfernte den Aliasnamen und es funktionierte perfekt. "Sie benötigen wahrscheinlich keinen Schlüsselalias, da es nur einen Schlüsseleintrag gibt." Verweist von Tomcat SSL-Fehler: Der Aliasname identifiziert keinen Schlüsseleintrag .

2
Ruthwik

Ich hatte das gleiche Problem, aber in meinem Fall war der Dateipfad (in application.properties) für die Keystore-Datei unter Linux falsch und verursachte diese Fehlermeldung.

1

Ich hatte das gleiche Problem. für mich server.ssl.key-alias wurde ein falscher Schlüssel gesetzt. Es klingt also, dass einige Server Mis-Konfigurationen in application.properties diese Fehlermeldung verursachen können.

0
Mohsen Zamani

Ab Spring Boot 2.0 und höher können Sie diese Eigenschaft ignorieren.

security.require-ssl=true

Um SSL zu aktivieren, verwenden Sie die folgende Konfiguration in Ihrer application.properties

Das für den Schlüsselspeicher verwendete Format

server.ssl.key-store-type = JKS

Der Pfad zum Schlüsselspeicher, der das Zertifikat enthält

server.ssl.key-store = Klassenpfad: somecert.jks 

Das zum Generieren des Zertifikats verwendete Passwort

server.ssl.key-store-password = Passwort

Der dem Zertifikat zugeordnete Alias

server.ssl.key-alias = Aliasname

Hinweis: server.ssl.key-store bezieht sich auf den Schlüsselspeicherort. Benutzen classpath-Präfix, wenn es in src/main/resources vorhanden ist. Andernfalls verwenden Sie Datei:/einige/Ort.

0