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.
J'ai écrit 2 articles sur Let's Encrypt et Spring Boot.
En bref, les étapes sont les suivantes:
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:
/etc/letsencrypt/live/example.com
.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.
É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
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.
keytool
en JavaLe fichier devrait ressembler à:
server.port = 8443
server.ssl.key-store = classpath:sample.jks
server.ssl.key-store-password = secret
server.ssl.key-password = password
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