web-dev-qa-db-fra.com

Comment puis-je configurer un certificat SSL letsencrypt et l'utiliser dans une application Spring Boot?

Je ne connais pas grand-chose à la sécurisation d’un serveur, je ne sais donc pas grand-chose à ce sujet, mais j’ai besoin que mon application Spring Boot fonctionnant sur un droplet Digital Ocean utilise HTTPS. 

Mon idée est d’enregistrer un certificat de letencrypt puis de dire à Spring de l’utiliser. 

Cependant, je ne sais pas comment faire cela. 

Merci. 

25
BrandenS

J'ai écrit 2 articles sur Let's Encrypt et Spring Boot.

  1. Délivrance d'un certificat.Application Spring Boot sécurisée par le certificat Let’s Encrypt
  2. Renouvellement d'un certificat. Encourageons le renouvellement du certificat: pour le démarrage du printemps

En bref, les étapes sont les suivantes:

  1. En tirant le Encryptons le client (certbot).
  2. Génération d'un certificat pour votre domaine (exemple.com.com)

    ./certbot-auto certonly -a standalone -d example.com -d www.example.com

Les objets sont générés dans /etc/letsencrypt/live/example.com. Spring Boot attend un fichier au format PKCS # 12. Cela signifie que vous devez convertir les clés dans un magasin de clés PKCS # 12 (par exemple, à l'aide d'OpenSSL). Comme suit:

  1. Ouvrez le répertoire /etc/letsencrypt/live/example.com.
  2. openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name Tomcat -CAfile chain.pem -caname root

Le fichier keystore.p12 avec PKCS12 est maintenant généré dans /etc/letsencrypt/live/example.com.

Il est temps de configurer votre application Spring Boot. Ouvrez le fichier application.properties et mettez-y les propriétés suivantes:

server.port=8443
security.require-ssl=true
server.ssl.key-store=/etc/letsencrypt/live/example.com/keystore.p12
server.ssl.key-store-password=<your-password>
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=Tomcat

Lisez mon blog post pour plus de détails et remarques. 

44
Emad Van Ben

Étape 1: Téléchargez certbot depuis git 

Vous devez récupérer le code source de Let's Encrypt sur votre serveur vers lequel pointe votre adresse de domaine. Cette étape peut prendre quelques minutes.

$ git clone https://github.com/certbot/certbot

$ cd certbot

$ ./certbot-auto --help

Remarque: Python 2.7.8 (ou supérieur) doit être préalablement installé.

Step2: génère des certificats et une clé privée

En exécutant la commande suivante dans votre terminal, Let's Encrypt génère des certificats et une clé privée pour vous.

$ ./certbot-auto certonly -a autonome \

-d example.com -d example.com

Remarque: Les clés sont générées dans le répertoire /etc/letsencrypt/live/example.com

Step3: Générer des fichiers PKCS12 à partir de fichiers PEM

Pour convertir les fichiers PEM en version PKCS12: Accédez à /etc/letsencrypt/live/example.comconvertissez les clés en PKCS12 à l’aide de OpenSSL dans le terminal, comme suit.

$ openssl pkcs12 -export -in fullchain.pem \

       -inkey privkey.pem \

           -out keystore.p12 \

       -name Tomcat \

       -CAfile chain.pem \

       -caname root

Entrez le mot de passe d'exportation: 

Vérification - Entrez le mot de passe d'exportation: 

(Remarque: - Écrivez une seule ligne à la fois et appuyez sur Entrée)

Step4: Configuration de l'application de démarrage Spring

Ouvrez votre 'application.properties' Mettez cette configuration là.

server.port = 8443 security.require-ssl = true

server.ssl.key-store =/etc/letsencrypt/live/exemple.com/keystore.p12

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

server.ssl.keyStoreType = PKCS12

server.ssl.keyAlias ​​= Tomcat

9
Pranay Kumbhalkar

Une autre option consiste à utiliser Spring Boot Starter ACME:

https://github.com/creactiviti/spring-boot-starter-acme

ACME (Automatic Certificate Management Environment) est le protocole utilisé par LetsEncrypt pour émettre automatiquement des certificats. 

2
acohen
  1. Obtenir un certificat SSL de letsencrypt
  2. Ajoutez-le dans un magasin de clés à l'aide de la commande keytool en Java
  3. Configurez votre application Spring pour utiliser le magasin de clés généré ci-dessus.

Le fichier devrait ressembler à:

 server.port = 8443
 server.ssl.key-store = classpath:sample.jks
 server.ssl.key-store-password = secret
 server.ssl.key-password = password
0
AlBlue

Pour printemps webflux la configuration des propriétés a changé

server.port=443

server.ssl.enabled=true//the changed line
server.ssl.keyAlias=netty
server.ssl.key-store=path
server.ssl.key-store-password=password
server.ssl.keyStoreType=PKCS12
0
ahll