Ich bin neu im Bereich der Sicherung eines Servers, daher weiß ich nicht viel darüber, aber ich brauche meine Spring Boot-Anwendung, die auf einem Digital Ocean Droplet ausgeführt wird, um HTTPS zu verwenden.
Meine Idee ist, ein Letsencrypt-Zertifikat zu registrieren und Spring dann anzuweisen, es zu verwenden.
Ich habe jedoch keine Ahnung, wie das geht.
Vielen Dank.
Ich schrieb 2 Blogbeiträge über Let's Encrypt und Spring Boot.
Kurz gesagt, die Schritte lauten wie folgt:
Zertifikat für Ihre Domain generieren (z. B. example.com)
./certbot-auto certonly -a standalone -d example.com -d www.example.com
Dinge werden in /etc/letsencrypt/live/example.com
generiert. Spring Boot erwartet eine PKCS # 12-formatierte Datei. Dies bedeutet, dass Sie die Schlüssel in einen PKCS # 12-Keystore konvertieren müssen (z. B. mit OpenSSL). Wie folgt:
/etc/letsencrypt/live/example.com
.openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name Tomcat -CAfile chain.pem -caname root
Die Datei keystore.p12 mit PKCS12 wird jetzt in /etc/letsencrypt/live/example.com
generiert.
Es ist an der Zeit, Ihre Spring Boot-Anwendung zu konfigurieren. Öffnen Sie die Datei application.properties und legen Sie dort die folgenden Eigenschaften fest:
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
Lesen Sie meinen Blogbeitrag für weitere Details und Anmerkungen.
Schritt 1: certbot von git herunterladen
Sie müssen den Quellcode von Let's Encrypt auf Ihrem Server abrufen, auf den Ihre Domain-Adresse verweist. Dieser Schritt kann einige Minuten dauern.
$ git clone https://github.com/certbot/certbot
$ cd certbot
$ ./certbot-auto --help
Anmerkung: Python 2.7.8 (oder höher) sollte zuvor installiert werden.
Step2: erzeugt Zertifikate und einen privaten Schlüssel
Wenn Sie den folgenden Befehl in Ihrem Terminal ausführen, generiert Let's Encrypt Zertifikate und einen privaten Schlüssel für Sie.
$ ./certbot-auto certonly -a Standalone \
-d example.com -d example.com
Anmerkung: Schlüssel werden im Verzeichnis /etc/letsencrypt/live/example.com generiert
Schritt 3: PKCS12-Dateien aus PEM-Dateien generieren
So konvertieren Sie die PEM-Dateien in die PKCS12-Version: .__ Gehen Sie zu /etc/letsencrypt/live/example.comconvertieren Sie die Schlüssel mithilfe von OpenSSL im Terminal wie folgt in PKCS12.
$ openssl pkcs12 -export -in fullchain.pem \
-inkey privkey.pem \ -out keystore.p12 \ -name Tomcat \ -CAfile chain.pem \ -caname root
Exportkennwort eingeben:
Bestätigen - Geben Sie das Exportkennwort ein:
(Hinweis: - Schreiben Sie jeweils eine Zeile und drücken Sie die Eingabetaste.)
Step4: Konfiguration der Spring Boot-Anwendung
Öffnen Sie Ihr 'application.properties' Legen Sie diese Konfiguration dort ab.
server.port = 8443 security.require-ssl = true
server.ssl.key-store =/etc/letsencrypt/live/example.com/keystore.p12
server.ssl.key-store-password = Passwort
server.ssl.keyStoreType = PKCS12
server.ssl.keyAlias = Tomcat
Eine weitere Option ist die Verwendung des Spring Boot Starter ACME:
https://github.com/creactiviti/spring-boot-starter-acme
ACME (Automatic Certificate Management Environment) ist das Protokoll, das von LetsEncrypt zur automatischen Ausgabe von Zertifikaten verwendet wird.
keytool
in Java in einen Keystore einDie Datei sollte folgendermaßen aussehen:
server.port = 8443
server.ssl.key-store = classpath:sample.jks
server.ssl.key-store-password = secret
server.ssl.key-password = password
Für Spring Boot Webflux wurde die Konfiguration der Eigenschaften geändert
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