2
votes

Spring WebFlux Netty SSL avec erreur de certificat auto-signé

J'essaie d'accéder à mon application Spring Boot exécutée sur Netty via https dans localhost, en utilisant un certificat auto-signé côté serveur.

Mon application.properties ressemble à ceci: p>

keytool -genkeypair -alias testkey -keyalg RSA -keysize 4096 -keystore test.jks -validity 36500

J'ai généré le keystore via:

server.ssl.enabled=true
server.ssl.key-store-type=JKS
server.ssl.key-store=test.jks
server.ssl.key-store-password=password
server.ssl.key-alias=testkey

J'obtiens l'erreur suivante:

io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: Alerte fatale reçue: certificate_unknown à io.netty.handler.codec.ByteToMessageDecoder.callDecode (ByteToMessageDecoder.java:472) à io.netty.handler.codec.ByteToMessageDecoder.channelRead (ByteToMessageDecoder.java:278) à io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:374) à io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead (AbstractChannelHandlerContext.java:360)

J'ai essayé d'importer le certificat dans le truststore JDK, même dans le système d'exploitation mais toujours le même. Une source a suggéré de nommer l'alias de clé "testkey" pour le faire fonctionner, ce qui ne fonctionnait pas non plus. Puisqu'il n'y a aucune autre mention de cette erreur dans Google, j'espère que vous pourrez aider.


0 commentaires

3 Réponses :


0
votes

Ce server.ssl.key-store = test.jks spécifie que votre test.jks se trouve dans le dossier racine de votre projet, vérifiez donc s'il est vraiment là.

Si vous avez ce fichier ailleurs dans le chemin des classes, vous pouvez utiliser le schéma classpath afin de spécifier l'emplacement du fichier, c'est-à-dire server.ssl.key-store = classpath: /test.jks

Vérifiez ceci pour plus d'informations


2 commentaires

Si Spring ne trouve pas le keystore, vous obtenez une exception: Causé par: java.lang.IllegalStateException: java.lang.IllegalStateException: org.springframework.boot.web.server.WebServerException: impossible de charger le magasin de clés


Ce problème est spécifique à Netty + WebFlux, il a fonctionné avec Tomcat + MVC.




1
votes

Extension de la réponse @Peter -

Téléchargez la version de mkcert depuis https://github.com/FiloSottile / mkcert / releases ou compiler directement à partir des sources.

Sous Windows pour générer un certificat auto-signé au format p12 -

mkcert-v1.4.1-windows -amd64.exe -pkcs12 -p12-file self-signed-cert.p12 localhost 127.0.0.1 :: 1

Et ajoutez la configuration suivante au fichier de propriétés de Spring Boots -

< pre> XXX

Remarque - classpath si vous ajoutez self-signed-cert.p12 dans le dossier resources . Si vous souhaitez l'exécuter à partir d'un emplacement spécifique server.ssl.key-store=./self-signed-cert.p12


0 commentaires