web-dev-qa-db-fra.com

Spring Boot after https: le démarrage du connecteur Tomcat configuré pour écouter sur le port 8444 a échoué.

J'ai suivi un guide pour activer https dans Spring Boot. L’application fonctionnait auparavant sur https: // localhost: 8080

J'ai créé un keystore.jks qui se trouve dans le même répertoire que mon application.properties, qui ressemble maintenant à:

# 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

Maintenant, si je lance la méthode principale pour démarrer l’application de démarrage printanier, elle génère:

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.

Le port n'est pas utilisé, il doit donc s'agir d'une mauvaise configuration?

Je ne sais pas quoi changer. Il s’agit d’une application SPA simple, Spring ne fait que servir un fichier index.html et ne dispose que d’un seul terminal REST. Comment Tomcat/spring doit-il être configuré pour accepter https dans ce cas et démarrer sans erreur?

7
cbll

Moi aussi j'ai eu le même problème et j'ai pu le résoudre. Mon problème générait le fichier keystore.p12.

Si vous avez un fichier de certificat et un fichier de clé privée, vous pouvez générer le fichierkeystore.p12 à l'aide de la commande suivante.

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

Un mot de passe vous sera demandé, vous pourrez y entrer un mot de passe comme vous le souhaitez . Une fois le fichier de clés généré, copiez-le dans le répertoire où se trouve votre fichier .jar.

Voici un exemple de configuration de travail.

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>

Notez le chemin d'accès au fichier de clés file:keystore.p12 s'il doit résider dans le même répertoire que le fichier exécutable .jar.

6
Johna

J'ai résolu le même problème en utilisant la configuration suivante

# 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

J'ai supprimé le nom d'alias et cela a fonctionné parfaitement. "Vous n’avez probablement pas besoin d’un alias de clé car il n’y aura qu’une entrée de clé" à partir de Erreur Tomcat SSL: le nom d’alias n’identifie pas une entrée de clé

2
Ruthwik

J'avais également le même problème, mais dans mon cas, le chemin d'accès au fichier de magasin de clés (dans application.properties) était incorrect sous Linux et à l'origine de ce message d'erreur.

1
Prasanna Veeramani

J'ai eu le même problème. pour moi server.ssl.key-alias a été défini sur une mauvaise clé. Il semble donc que certains serveur mauvaises configurations dans application.properties peuvent provoquer l'apparition de ce message d'erreur.

0
Mohsen Zamani

À partir de Spring Boot 2.0 et supérieur, vous pouvez ignorer cette propriété.

security.require-ssl=true

Pour activer SSL, utilisez la configuration ci-dessous dans votre application.properties

Le format utilisé pour le magasin de clés

server.ssl.key-store-type = JKS

Le chemin d'accès au magasin de clés contenant le certificat

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

Le mot de passe utilisé pour générer le certificat

server.ssl.key-store-password = mot de passe

L'alias associé au certificat

server.ssl.key-alias = nom_alias

Remarque: server.ssl.key-store fait référence à l'emplacement du magasin de clés. Utilisation préfixe classpath, s'il est présent dans src/main/resources. Sinon, utilisez, file:/some/location.

0
Sireesh Yarlagadda