Wenn man nichts angibt, dann generiert der Let’s Encrypt-Client einen RSA Schüssel, welcher von Let’s Encrypt signiert wird. Die RSA Schlüssel sind in der Regel 2048 Bit lang. Man kann auch längere Schlüssel generieren, diese erhöhen die Sicherheit.
Es ist auch möglich ECC für Zertifikate zu nutzen. Der offensichtlichtlichste Vorteil ist, dass ECC Schlüssel viel kürzer als RSA Schlüssel sind - bei einem gleichwertigen Sicherheitsnivieau. Auf leistungsschwachen Geräten ist ECC, in meinen Augen, auch schneller als RSA. Das merkt man erst bei RSA Schlüsseln welche signifikant länger als 2048 Bit sind. Es hat sich bewährt, dass man die Kurve secp256r1 nutzt, secp384r1 funktioniert auf manchen Android 7 Geräten nicht richtig und längere Kurven werden z.B. von Chrome nicht unterstützt.
Im folgenden möchte ich zeigen, wie man ein SAN-Zertifikat anfordert
ECC-Zertifikat anfordern
Privaten Schlüssel erzeugen
openssl ecparam -genkey -name prime256v1 > domain.key
Certificate Signing Request erstellen
domain=blog.0rpheus.net
country=DE
state=Saxony-Anhalt
openssl req -new -sha256 \
-key domain.key \
-subj "/C=$country/ST=$state/CN=$domain" \
-reqexts SAN \
-config <(cat /etc/ssl/openssl.cnf \
<(printf "\n[SAN]\nsubjectAltName=DNS:$domain")) \
-out domain.csr
Zertifikat anfordern
email=meine@email.de
outdir=/etc/certs
mkdir -p "$outdir/fullchain/"
mkdir -p "$outdir/chain/"
mkdir -p "$outdir/cert/"
letsencrypt certonly \
--agree-tos \
--standalone \
--email "$email" \
--fullchain-path "$outdir/fullchain" \
--chain-path "$outdir/chain" \
--cert-path "$outdir/cert" \
--csr domain.csr
Anschließden erhält man die Zertifikatsdateien in den entsprechenden
Verzeichnissen. Das ganz ist nur ein kurzer Abriss wie man ECC Zertifikate
von Let’s Encrypt erhält. Der Befehl letsencrypt
hat viel mehr Parameter,
die man nach den eigenen Anforderungen setzten kann.