Mit Let’s Encrypt kann man sich kostenlos und schnell SSL-Zertifikate erstellen lassen, dazu benötigt man nur das Programm auf dem Server. Eben hatte ich ein Problem damit, das Zertifikat zu erneuern.
Administratoren mit Root-Zugang können sich mit Let’s Encrypt relativ schnell und kostenlos SSL-Zertifikate erstellen lassen. Dazu installiert man einfach (neuerdings) nur certbot („apt-get install certbot ‑t jessie-backports”) und kann mittels „certbot certonly” gültige Zertifikate erstellen lassen.
Let’s Encrypt nutze ich schon seit der Beta und verwende es, um jegliche Webseiten und sonstige Inhalte mit einem SSL-Zertifikat auszustatten. Der entscheidende Vorteil liegt natürlich darin, dass der komplette Traffic verschlüsselt wird und niemand nachvollziehen kann, was der Besucher/Nutzer gerade dort macht.
Die Zertifikate kann man sich kostenlos erstellen lassen und haben eine Gültigkeit von drei Monaten. Kurz vor den drei Monaten sollte man logischerweise die Zertifikate erneuern, sodass auch weiterhin der Browser (und Co.) die Verbindung als sicher einstuft und der Nutzer keine Fehlermeldung angezeigt bekommt.
Neuerdings wird certbot für alles genutzt und damit ist es unter anderem auch möglich, die Zertifikate automatisch erneuern zu lassen. Ich mache aber nach wie vor alles noch manuell, auch das Erneuern (Verlängern) der Zertifikate.
Mit certbot wurde damals bei mir auch ein cronjob erstellt, der so ziemlich jeden Tag die Gültigkeit des Zertifikats prüft und gegebenenfalls diese erneuert. Da man aber den root-Zugang (auf Web-Root und Co.) benötigt, muss vorher nginx gestoppt werden. In meinem Fall (Debian 8.5 mit nginx) ist das jedes Mal aber ins blaue gelaufen, da der automatisch erstellte cronjob für die Überprüfung nginx nicht stoppt (und danach wieder startet).
Demnach ist mit der Zeit viele Überprüfungen gestartet worden, viele scheiterten und viele steckten noch fest, sodass ich eben vor dem Problem stand, meine Zertifikate nicht manuell erneuern zu können aufgrund dessen. Fehlermeldung: „There were too many requests of a given type :: Error creating new authz :: Too many currently pending authorizations”.
Dummerweise wäre mein altes Zertifikat morgen abgelaufen und die Besucher hier hätten eine Fehlermeldung erhalten, dass sie (wahrscheinlich) eine unsichere Webseite aufrufen möchten. Da natürlich nicht jeder so technisch versiert ist, ist das natürlich „für die breite Masse” katastrophal für mich, sodass ich nach einem Workaround suchen musste.
Wer nun dasselbe Problem hat, dass man wegen „Too many currently pending authorizations” keine neue Zertifikate erstellen kann, kann einfach den Ordner von „/etc/letsencrypt” umbenennen, beispielsweise in „/etc/letsencrypt_”. Mit „certbot certonly” erstellt man dann quasi ein komplett neues Profil und kann wieder die gewünschten Zertifikate erstellen.
Nun sollte man aber unbedingt beachten, dass man alle Zertifikate erneut generieren lassen muss. In meinem Fall nicht problematisch, da alle dasselbe Ablaufdatum (nämlich morgen) haben, sodass es für mich keinen Mehraufwand war, alle Zertifikate nochmal zu erstellen. Ebenso sollte man sicherstellen, dass in der nginx.conf der jeweiligen Webseite auch den neuen Pfad zum Zertifikat haben (sollte sich dieser nun geändert haben).
Den „alten Let’s Encrypt-Ordner” („/letsencrypt_”) würde ich vorerst nicht löschen, sondern behalten. Eventuell benötigt man irgendwann mal die alten Zertifikate oder kann sie anderweitig gebrauchen.
Tipp: Wer manuell nginx stoppen, die Zertifikate erneuern und anschließend nginx wieder starten möchte, kann diesen Befehl nutzen: „certbot renew –standalone –pre-hook „service nginx stop” –post-hook „service nginx start””.
Bei Bedarf auch ein eigenen cronjob dafür anlegen (alle zwei Monate oder so sollte genügen). Den alten Cronjob von certbot („/etc/cron.d/certbot”) würde ich meiner Meinung nach löschen.