This page (revision-5) was last changed on 04-Jan-2021 16:20 by ThomasBayen 

This page was created on 27-Jun-2020 14:50 by Peter Hormanns

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
5 04-Jan-2021 16:20 2 KB ThomasBayen to previous Link zu neuer LetsEnrypt Seite
4 27-Jun-2020 15:49 2 KB Peter Hormanns to previous | to last Challenge und Download
3 27-Jun-2020 15:10 1 KB Peter Hormanns to previous | to last Zertifikat beantragen
2 27-Jun-2020 14:59 1 KB Peter Hormanns to previous | to last CSR
1 27-Jun-2020 14:50 1 KB Peter Hormanns to last register

Page References

Incoming links Outgoing links

Version management

Difference between version and

!!!PJAC - Porunov Java ACME Client

Mittlerweile gibt es eine große Auswahl an Bots für das ACME Protokoll, mit dem man (zum Beispiel bei LetsEncrypt)Letsenryct) TLS Zertifikate signieren lassen kann. Als Java-Entwickler hatte ich auf Basis der Bibliothek ACME4j  meine eigene Lösung gebaut, die aber nur mit allen Versionen der Bibliothek und alten Versionen des ACME Protokolls arbeitet.

Aus der Basis ACME4j gibt es auch einen fertigen ACME Client: PJAC, den ''Porunov Java ACME Client''.

!!1 Account bei Letsencrpt

Wenn man Zertifikate signieren will, benötigt man einen Account bei Anbieter. Die Authetifizierung erfolgt über einen Public Key, den wir in diesem Schritt erzeuge und nutzen.

!1.1 Key erzeugen

{{{
openssl genrsa -out $HOME/pjac/account.key 2048
}}}

!1.2 Account registrieren

{{{
java -jar acme_client.jar --log-dir $HOME/pjac --command register --account-key $HOME/pjac/account.key \\
 --with-agreement-update --email webmaster@example.com
}}}

!!2 Zertifikat ausstellen

!2.1 Zertifikat Request erzeugen

{{{
openssl req -newkey rsa:2048 -days 370 -nodes -sha256 -out example.com.csr -keyout example.com.key
}}}

[OpenSSL] stellt einige Rückfragen nach Land, Ort und der Organisationseinheit. Wichtig ist, dass wir bei der Frage nach dem ''Common Name'' unsere Domain für das Zertifikat angeben! Im Beispiel ist das ''example.com''.

!2.2 Zertifikat beantragen

{{{
java -jar acme_client.jar --log-dir $HOME/pjac --command order-certificate \\
   --account-key $HOME/pjac/account.key --work-dir $HOME/pjac --csr example.com.csr \\
   --well-known-dir /var/www/example.com/.well-known/acme-challenge --one-dir-for-well-known
}}}

<<Schreibrechte unter ''/var/www/wolke.jalin.de/.well-known/acme-challenge/'' vorausgesetzt.

!2.3 Die Challenge

{{{
java -jar acme_client.jar --log-dir $HOME/pjac --command verify-domains \\
   --account-key $HOME/pjac/account.key --work-dir $HOME/pjac --csr example.com.csr
}}}

!2.4 Download des Zertifikats

{{{
java -jar acme_client.jar --log-dir $HOME/pjac --command generate-certificate \\
   --account-key $HOME/pjac/account.key --work-dir $HOME/pjac --csr example.com.csr \\
   --cert-dir /etc/nginx/...
}}}

Die Option ''--cert-dir'' zeigt auf den Pfad, in den das Zertifikat und die Zertifikats-Chain gespeichert werden. Wir benötigen Schreibrechte.

Die Namen der Download-Dateien sind:
* cert.pem
* chain.pem
* fullchain.pem

Diese Zertifikate werden mit dem Key (''example.com.key'') in die Konfiguration des Webservers eingebunden.

!!Links

*[PJAC - Porunov Java ACME Client|https://github.com/porunov/acme_client]
*[ACME4j Java ACME library|https://github.com/shred/acme4j]