Activer HTTPS avec certificat auto-signé au Printemps Boot 2.0
Je suis ce tutoriel pour activer HTTPS au Printemps Boot 2.0 à l'aide d'un certificat auto-signé, juste pour fins de test. En résumé, le tutoriel comprend les étapes suivantes:
1.Générer le fichier de clés à l'aide de keytool
.
keytool -genkey -alias tomcat
-storetype PKCS12 -keyalg RSA -keysize 2048
-keystore keystore.p12 -validity 3650
2.Activer HTTPS au Printemps de Démarrage en ajoutant certaines propriétés dans le application.properties
fichier.
server.port: 8443
server.ssl.key-store: keystore.p12
server.ssl.key-store-password: mypassword
server.ssl.keyStoreType: PKCS12
server.ssl.keyAlias: tomcat
3.Redirection HTTP vers HTTPS (en option). J'ai ignoré cette partie.
Mais quand je lance mon application, j'ai ces erreurs:
org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-8443]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
at org.apache.catalina.core.StandardService.addConnector(StandardService.java:225) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:255) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:197) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:300) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:552) [spring-context-5.0.4.RELEASE.jar:5.0.4.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:388) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1234) [spring-boot-2.0.0.RELEASE.jar:2.0.0.RELEASE]
at epic.gwdg.restgraph.RestgraphApplication.main(RestgraphApplication.java:10) [classes/:na]
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1021) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
... 13 common frames omitted
Caused by: java.lang.IllegalArgumentException: Private key must be accompanied by certificate chain
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:116) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:87) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:225) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1150) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:591) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1018) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
... 14 common frames omitted
Caused by: java.lang.IllegalArgumentException: Private key must be accompanied by certificate chain
at java.base/java.security.KeyStore.setKeyEntry(KeyStore.java:1170) ~[na:na]
at org.apache.tomcat.util.net.jsse.JSSEUtil.getKeyManagers(JSSEUtil.java:257) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:114) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
... 19 common frames omitted
2018-03-16 16:42:30.917 INFO 970 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2018-03-16 16:42:30.931 INFO 970 --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-03-16 16:42:30.933 ERROR 970 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
The Tomcat connector configured to listen on port 8443 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 8443, or configure this application to listen on another port.
2018-03-16 16:42:30.934 INFO 970 --- [ main] ConfigServletWebServerApplicationContext : Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@58ce9668: startup date [Fri Mar 16 16:42:26 CET 2018]; root of context hierarchy
2018-03-16 16:42:30.936 INFO 970 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
Process finished with exit code 1
En gros, le message est:
Clé privée doit être accompagné d'un certificat de la chaîne.
C'est un certificat auto-signé, de sorte qu'il, bien sûr, n'a pas la confiance de la chaîne. Comment puis-je résoudre ce problème?
Ici est mon application.properties
fichier:
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat
Je vous remercie beaucoup pour votre aide.
OriginalL'auteur Triet Doan | 2018-03-16
Vous devez vous connecter pour publier un commentaire.
Le problème est que dans votre fichier de clés générées vous n'avez pas une paire de clés, donc il n'y a pas de clé privée c'est parce que votre utilisation de l'option-genkey-vous besoin de le changer par l'option-genkeypair :
Donc je pense que cela devrait fonctionner :
Dans votre ressort de configuration de démarrage de changement ":" par "=" et ajoutez le chemin d'accès à votre fichier de stockage des clés, je suppose que votre fichier de clés.p12 est dans votre dossier de ressources donc :
- Je mettre à jour ma réponse ,au printemps propriétés conf changement " : "par "=" et ajoutez le chemin d'accès à votre fichier de clés pour le paramètre "serveur.le protocole ssl.clé-store"
En fait, j'utilise "=" et le "classpath" dans ma configuration. J'ai essayé à la fois moyen et l'erreur est toujours là...
- Je mettre à jour ma réponse en plus il y a un autre problème à nouveau changer de serveur".le protocole ssl.keyStoreType" = PKCS12 par "server.le protocole ssl.clé-magasin-type=PKCS12"
Je viens de mettre à jour ma question à ajouter à ma configuration. Je remarque que le champ mot de passe doit être
key-store-password
, comme la vôtre. Je l'ai changé, et ça marche!!!!! Vous pouvez mettre à jour votre réponse (key-alias
). Je vous marquez votre réponse comme correcte. Merci 🙂OriginalL'auteur E2rabi
Je recevais cette horrible
Private key must be accompanied by certificate chain
d'erreur aussi bien sur mon Ressort de Démarrage de l'application avec un serveur Tomcat intégré. Il me faisait fou.Il s'avère d'une simple erreur de frappe est mon problème:
De sorte que le message d'erreur n'est pas utile à tous les pour ce cas. J'espère que cela aide quelqu'un d'autre. Assurez-vous de vérifier que vous êtes à mettre les bons mots de passe (clé vs keystore) au bon endroit. Le même problème peut se produire dans une des propriétés de base de l'installation, ça dépend de ce que vous travaillez avec.
OriginalL'auteur jocull
1."-genkeypair"
OriginalL'auteur Frank Liu
J'ai eu le même problème. J'ai fait les modifications à partir de la 2e réponse. Mais le problème n'a pas disparu.
Après tout ce que j'ai fait, j'ai juste compris mon de magasin de clés.p12 certificat de pom.xml dans profils section
OriginalL'auteur JenkaBY