[PYTHON] Die Geschichte des Wechsels von WoSign zu Let's Encrypt für ein kostenloses SSL-Zertifikat

Auslöser zum Wechseln des SSL-Zertifikats

Der folgende Artikel wurde kürzlich veröffentlicht.

Firefox blockiert Richtlinien, da Chinas größte Zertifizierungsstelle "WoSign" das Ausstellungsdatum des Zertifikats manipuliert hat http://gigazine.net/news/20160928-wosign-firefox-block/

WoSign war praktisch, da es mehrere Jahre lang kostenlos SSL-Zertifikate ausstellen kann, aber es war ein Ausbruch von Manipulationen, was ein Problem war.

Als ich Anfang letzten Jahres nach einem Ort suchte, an dem ich ein kostenloses SSL-Zertifikat ausstellen konnte, entschied ich mich dafür, weil es nur einen bemerkenswerten Ort wie WoSign gab, aber als ich erneut nachforschte, war Let's Encrypt 4 dieses Jahres. Im Mai wurde von der Beta auf den offiziellen Dienst umgestellt.

Leaving Beta, New Sponsors https://letsencrypt.org/2016/04/12/leaving-beta-new-sponsors.html

Gutes Timing (lacht)

Deshalb habe ich mich entschlossen, Manipulationen und verdächtige Dienste aufzugeben.

So installieren Sie Let's Encrypt

Die Einführungsmethode wurde automatisiert, um die konventionelle Weisheit umzukehren. Bisher erhielt ich bezahlte SSL-Zertifikate für Unternehmen, aber ich war überrascht, dass zu diesem Zeitpunkt kein Verfahren als selbstverständlich angesehen wurde.

Bedingungen, die eingeführt werden können

Da es nur diese beiden Bedingungen gibt, habe ich bereits erfüllt. Oder besser gesagt, es ist unwahrscheinlich, dass Sie ein SSL-Zertifikat wünschen, obwohl Sie diese Bedingung nicht haben.

Installationsverfahren

Das Abrufen eines Zertifikats erfolgt mit einem Tool namens certbot. Das Werkzeug befindet sich auf Github, es fühlt sich also so an, als würde man es mit Git ziehen und benutzen.

cd /usr/local
git clone https://github.com/certbot/certbot
cd certbot/

Da der diesmal eingeführte Server an das Vault-Repository von CentOS 6.2 gebunden war, mussten Basis und Updates in den folgenden Schritten vorübergehend aktiviert werden.

vi /etc/yum.repos.d/CentOS-Base.repo

Führen Sie dann den folgenden Befehl aus.

./certbot-auto

Die yum-Installation wird gestartet. Drücken Sie daher "y", um fortzufahren. Nach einer Weile begann die Zertifikatserstellung interaktiv mit einem Bluescreen, aber ich hatte nicht den gewünschten Domainnamen in den Optionen, also habe ich ihn abgebrochen und beendet.

Holen Sie sich dann das Zertifikat mit dem folgenden Befehl.

./certbot-auto certonly --webroot \
-w /var/www/hogehoge -d www.example.com \
-m [email protected] \
--agree-tos

certonly ist eine Option, für die Sie nur ein Zertifikat benötigen. --webroot ist eine Option, um automatisch eine Datei zur Authentifizierung in den Dokumentenstamm einzufügen. Neben -w befindet sich der Pfad des in der Domäne veröffentlichten Dokumentstamms. Neben -d steht der Domänenname, für den Sie ein Zertifikat erhalten möchten. Neben -m steht die E-Mail-Adresse der verantwortlichen Person. Es dient dazu, Kontakt aufzunehmen, wenn etwas passiert. --agree-tos ist eine Hinweisoption, dass Sie den Nutzungsbedingungen zustimmen.

Ich habe jetzt ein Zertifikat, erhalte aber während der Ausführung die folgende Warnung:

/root/.local/share/letsencrypt/lib/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6

Als ich gegoogelt habe, gab es viele Leute, die auf Probleme mit der Python-Version gestoßen sind. Es gab verschiedene Leute, die durch waren und diejenigen, die Maßnahmen mit SCL ergriffen.

~~ Ich habe auch versucht, 2.7 in SCL zu setzen, aber es hat nicht geklappt. ~~ Wenn Sie in den folgenden PFAD schauen, der bei der Installation von certbot eingegeben wird ...

ll /root/.local/share/letsencrypt/lib/python2.6/
Insgesamt 344
lrwxrwxrwx 1 root root 32 29. September 13:53 2016 UserDict.py -> /usr/lib64/python2.6/UserDict.py
-rw-r--r--1 Wurzel Wurzel 10062 29. September 13:53 2016 UserDict.pyc
lrwxrwxrwx 1 Wurzel Wurzel 31. September 29 13:53 2016 _abcoll.py -> /usr/lib64/python2.6/_abcoll.py
-rw-r--r--1 Wurzel Wurzel 24165 29. September 13:53 2016 _abcoll.pyc
lrwxrwxrwx 1 Wurzel Wurzel 27. September 29 13:53 2016 abc.py -> /usr/lib64/python2.6/abc.py
-rw-r--r--1 Wurzel Wurzel 6357 29. September 13:53 2016 abc.pyc
lrwxrwxrwx 1 Wurzel Wurzel 30. September 29 13:53 2016 codecs.py -> /usr/lib64/python2.6/codecs.py
-rw-r--r--1 Wurzel Wurzel 39165 29. September 13:53 2016 codecs.pyc
lrwxrwxrwx 1 Wurzel Wurzel 27. September 29 13:53 2016 config -> /usr/lib64/python2.6/config
lrwxrwxrwx 1 root root 32 29. September 13:53 2016 copy_reg.py -> /usr/lib64/python2.6/copy_reg.py
Folgendes wird weggelassen

Ein symbolischer Link wurde wie folgt direkt an Python 2.6 angehängt. Unabhängig davon, wie oft Sie Bash starten, das 2.7 verwenden kann, wird anscheinend eine Warnung angezeigt, da 2.7 nicht verwendet wird und 2.6 Python zwangsweise verwendet wird. ~~

~~ Ich habe das Zertifikat selbst erstellt, also werde ich weitermachen, aber eines Tages funktioniert es möglicherweise nicht mehr. ~~

Mit den oben genannten wurde die Warnung von 2.6 nicht angezeigt und 2.7 wurde verwendet. In diesem Zustand wurden unten 2.7 Caches erstellt. /root/.local/share/letsencrypt/lib/python2.7

Wenn Sie jedoch den Befehl certbot-auto ohne scl enable python27 bash ausführen, wird er erneut durch den 2.6-Cache ersetzt. Seien Sie also vorsichtig.

rm -rf /root/.local/share/letsencrypt
wget https://centos6.iuscommunity.org/ius-release.rpm
rpm -ivh ius-release.rpm
yum -y install python27 python27-devel python27-pip python27-setuptools python27-virtualenv

Nach Abschluss der obigen Installation habe ich mich erneut an der Konsole angemeldet und certbot-auto ausgeführt. Dabei wurde python2.7 gefunden und ohne Erlaubnis verwendet. Python2.7 wird ebenfalls im Cache gespeichert. Mit dieser Methode bin ich glücklich, weil ich nicht den Fehler mache, versehentlich die Aktivierung von scl zu vergessen, einen 2.6-Cache zu erhalten und eine Warnung zu erhalten.

Ändern Sie die Apache-Einstellungen

Schreiben Sie Folgendes in die entsprechenden Servereinstellungen in der Apache Conf-Datei.

SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem

Dann lade Apache neu und du bist fertig.

service httpd reload

So aktualisieren Sie automatisch

Let's Encrypt hat ein Ablaufdatum von nur 90 Tagen. Daher ist es für Menschen schwierig, jedes Mal zu verarbeiten, und es scheint vergessen zu sein.

Fügen Sie die Einstellungen in crontab ein, damit sie mit einem einzigen Befehl aktualisiert werden können.

crontab -u root -e
00 03 01 * * source /opt/rh/python27/enable;/usr/local/certbot/certbot-auto renew --force-renew && /sbin/service httpd reload

Dies ist ein Befehl, das Zertifikat am ersten Tag eines jeden Monats um 3:00 Uhr morgens zwangsweise zu erneuern. Ich kann nicht alle 90 Tage in Crontab sagen, also mache ich es jeden Monat. Let's Encrypt hat eine Obergrenze für die Aktualisierungshäufigkeit, aber es scheint kein Problem zu geben, wenn es einmal im Monat ist.

abschließend

Dieses Mal habe ich die Maßnahmen zusammengefasst, die angesichts einer Notsituation ergriffen wurden, in der das SSL-Zertifikat aufgrund eines Fehlverhaltens der Zertifizierungsstelle in eine andere Organisation geändert werden musste. ~~ Es ist ein wenig bedauerlich, dass das Problem mit der Python-Version weiterhin besteht, aber ich bin froh, dass ich es vorerst lösen konnte. ~~ Ich kann keinen anderen Dienst wie Let's Encrypt finden, daher mache ich mir ein wenig Sorgen, dass es nur einer ist, aber ich hoffe nur, dass der Dienst für immer fortgesetzt wird.

Recommended Posts

Die Geschichte des Wechsels von WoSign zu Let's Encrypt für ein kostenloses SSL-Zertifikat
Die Geschichte vom Umzug von Pipenv zur Poesie
Die Geschichte des Wechsels des Azure App Service-Websystems von Windows zu Linux
Die Geschichte des Starts eines Minecraft-Servers von Discord
Skript zum Abrufen des Ablaufdatums des SSL-Zertifikats
Die Geschichte der Einrichtung eines VIP-Kanals im internen Chatwork
Die Geschichte des Django-Modellfeldes verschwindet aus der Klasse
Die Geschichte des Kopierens von Daten von S3 auf Googles TeamDrive
Immerhin die Geschichte der Rückkehr von Linux zu Windows
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
Eine kleine süchtig machende Geschichte mit den Berechtigungen des von expdp angegebenen Verzeichnisses (für Anfänger)
Fühlen Sie sich frei, die Festplatte zu verschlüsseln
Die Geschichte des Exportierens eines Programms
Die Geschichte, wie ein Geschäft BOT (AI LINE BOT) nach Go To EAT in der Präfektur Chiba durchsucht (1)
[AtCoder für Anfänger] Sprechen Sie über den Rechenaufwand, den Sie grob wissen möchten
Eine Geschichte über den Versuch, den Testprozess eines 20 Jahre alten Systems in C zu verbessern
Eine Geschichte über das Erstellen eines Programms, mit dem die Anzahl der Instagram-Follower in einer Woche von 0 auf 700 erhöht wird
Eine Geschichte von einer Person, die von Anfang an auf Datenwissenschaftler abzielte
Die Geschichte des Versuchs, den Client wieder zu verbinden
Die Geschichte, MeCab in Ubuntu 16.04 zu setzen
Die Geschichte der Verarbeitung A von Blackjack (Python)
Die Geschichte von pep8 wechselt zu pycodestyle
Fühlen Sie sich frei, einen Test mit der Nase zu schreiben (im Fall von + gevent)
Die Geschichte der IPv6-Adresse, die ich auf ein Minimum beschränken möchte
SSH-Anmeldung am Zielserver von Windows mit einem Klick auf eine Verknüpfung
Ich möchte dem Anfang einer WAV-Datei 1 Sekunde lang Stille hinzufügen
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
Die Geschichte eines hochrangigen Technikers, der versucht, das Überleben der Titanic vorherzusagen
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
So berechnen Sie die Volatilität einer Marke
Die Geschichte, dass die Lernkosten von Python niedrig sind
Ändern Sie den Dezimalpunkt der Protokollierung von, nach.
Bildverarbeitung? Die Geschichte, Python für zu starten
Die Geschichte eines Mel-Icon-Generators
Von der Einführung von Pyethapp bis zur Vertragsabwicklung
Eine Geschichte, die fehlgeschlagen ist, als versucht wurde, das Suffix mit rstrip aus einem String zu entfernen
Ein Python-Skript, das die Anzahl der Jobs für eine bestimmte Bedingung von Indeed.com abruft
Die Geschichte von Airflows Webserver und DAG, deren Laden lange dauert
Eine Geschichte über die Verbesserung des Programms zum teilweisen Füllen von binärisierten 3D-Bilddaten
Versuchen Sie, mit matplotlib aus den Daten von "Schedule-kun" eine Kampfaufzeichnungstabelle zu erstellen.
Ich kann die Uhrenquelle tsc nicht finden! ?? Die Geschichte des Versuchs, einen Kernel-Patch zu schreiben
Eine Geschichte über den Versuch, mit der kostenlosen Stufe von AWS zur COVID-19-Analyse beizutragen, und das Scheitern
Die Geschichte der Portierung von Code von C nach Go (und zur Sprachspezifikation)
Suchen Sie eine Richtlinie für die Anzahl der Prozesse / Threads, die auf dem Anwendungsserver festgelegt werden sollen
Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
Hier finden Sie die Menge an freiem Speicher des Befehls free
Erstellen Sie einen Datensatz mit Bildern, die für das Training verwendet werden sollen
Eine Geschichte, die den Aufwand für Betrieb / Wartung reduziert
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Ein Memo zum visuellen Verstehen der Achse von Pandas.Panel
Python zeigt aus der Perspektive eines C-Sprachprogrammierers
Die Geschichte eines neuronalen Netzwerks der Musikgeneration
Schritte zur Berechnung der Wahrscheinlichkeit einer Normalverteilung
SSL, das kostenlos genutzt werden kann! Lassen Sie uns gemeinsam bei der Arbeit oder zu Hause verschlüsseln!
Eine Geschichte über die Änderung des Master-Namens von BlueZ
Zip 4 Gbyte Problem ist eine Geschichte der Vergangenheit