[PYTHON] SSL, das kostenlos genutzt werden kann! Lassen Sie uns gemeinsam bei der Arbeit oder zu Hause verschlüsseln!

Einführung

Wenn Sie HTTPS intern oder zu Hause unterstützen möchten, müssen Sie dafür bezahlen, das mühsame Verfahren durchführen und es alle paar Jahre aktualisieren, was äußerst mühsam ist.

Natürlich bezahle ich dafür, daher kann ich es nicht frei in HTTPS konvertieren, und am Ende entscheide ich mich für das Oreore-Zertifikat, aber deshalb habe ich ein "x" in die URL eingefügt und das Importieren des Zertifikats, um es zu verbessern, ist ehrlich gesagt mühsam.

Immerhin werde ich es mit angehängtem × machen, aber wenn das der Fall ist, kann wget nicht richtig gemacht werden, und es wird im Netz gesagt, dass es nicht sicher ist, also was machst du? !!

Zu dieser Zeit erschien "Let's Encrypt" mit voller Zufriedenheit! Die Veröffentlichung wurde aus verschiedenen Gründen mehrmals verschoben, aber dieses Mal ist sie endlich "Public Beta" geworden und jeder kann sie frei verwenden, also werde ich sie vorstellen!

Was ist Lets Encrypt?

letsencrypt.png

Offizielle HP: https://letsencrypt.org/ Github:https://github.com/letsencrypt/letsencrypt

Lets Encrypt ist eine kostenlose Zertifizierungsstelle, die jeder problemlos verwenden und automatisieren kann!

Let’s Encrypt is a new Certificate Authority: It’s free, automated, and open.

Ich möchte sie in der folgenden Reihenfolge vorstellen.

  1. Wie ist es?
  2. Plugin
  3. Fallstudie
  4. Vorsichtsmaßnahmen für den Gebrauch
  5. Eigentlich verwenden
  6. Ergebnisse

Wie ist es?

Es sieht wie folgt aus.

  1. Verschlüsseln Sie den Clientzugriff auf einen externen Server
  2. Der ursprüngliche Server hat HTTP (S) -Zugriff auf die vom Client angegebene Domäne.
  3. Der WEB-Server am Zugriffsziel der Domäne antwortet
  4. Nachdem Sie die Antwort des WEB-Servers bestätigt haben, senden Sie das Zertifikat an den Let's Encrypt-Client.

letsencrypt-flow.png

Plugin

Plugin Auth Inst
apache Y Y
standalone Y N
webroot Y N
manual Y N
nginx Y Y

Dieses Mal werden wir "Standalone" und "Webroot" verwenden, die relativ informativ sind.

Das Folgende ist eine kurze Erklärung.

Plugin Methode
Stand Alone Lassen Sie das Zertifikat erhalten'Vorgehensweise mit einem WEB-Server für die Verschlüsselung
Web Root So erhalten Sie ein Zertifikat auf einem vorhandenen WEB-Server

letsencrypt-plugins.png

Jedes Plug-In hat seinen eigenen Zweck. Ich werde das als nächstes erklären.

In einem solchen Fall ist dieses Plugin!

Voraussetzung ist eine ** Domain-Akquisition! ** **. Es kann nicht für Server verwendet werden, die keine Domäne erworben haben (lokale Domäne oder IP). Sie können jedoch eine lokale Domain verwenden, solange Sie eine Domain mit demselben Namen haben.

letsencrypt-table.png

Wenn es sich um einen einfachen öffentlichen Server handelt, ist Webroot in Ordnung, aber ich denke, dass Standalone für eine kleine spezielle Umgebung effektiv ist. Übrigens, wenn es darum geht, welche Methode einfacher ist, ist Webroot oft einfacher.

Vorsichtsmaßnahmen für den Gebrauch

  1. Das Ablaufdatum des Zertifikats beträgt MAX 90 Tage
  2. Die BETA-Version verfügt über bis zu 5 Zertifikate in 7 Tagen für 1 Domain
  3. Platzhalter können nicht verwendet werden
  4. IP kann nicht verwendet werden

Eigentlich verwenden

Die Schlussfolgerung, welche Art von Befehl erforderlich ist, lautet wie folgt.

console


$ sudo docker run -it --rm \
    --expose 80 \
    -p 80:80 \
    --name letsencrypt \
    -v "/etc/letsencrypt:/etc/letsencrypt" \
    -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
    quay.io/letsencrypt/letsencrypt:latest \
      certonly \
      --standalone \
      --standalone-supported-challenges http-01 \
      --register-unsafely-without-email \
      --renew-by-default \
      -d www.my-site.com \
      --agree-tos

Wenn www.my-site.com eine Verbindung zum erstellten Docker herstellen kann, sollte das Zertifikat nach Ausführung des obigen Befehls unter / etc / letsencrypt erstellt worden sein. Im aktuellen offiziellen Docker ist nur Port 443 geöffnet, sodass Sie Expose ausführen müssen, um die Kommunikation über Port 80 zu akzeptieren.

console


$ git clone https://github.com/letsencrypt/letsencrypt $HOME/letsencrypt
$ $HOME/letsencrypt/letsencrypt-auto --help

↑ Nur zum ersten Mal ausführen

console


$ $HOME/letsencrypt/letsencrypt-auto
    certonly \
    --webroot \
    --webroot-path /usr/share/nginx/html \
    --register-unsafely-without-email \
    --renew-by-default \
    -d www.my-site.com \
    --agree-tos

Liste der Argumente, die ich kenne

Streit Erläuterung
--standalone Angeben eines Plug-Ins
--standalone-supported-challenges http-01 Verwenden Sie HTTP während der Authentifizierungsaufforderung
--standalone-supported-challenges tls-sni-01 Verwenden Sie HTTPS während der Authentifizierungsaufforderung
--webroot Verwenden Sie Webroot als Plug-In
--webroot-path [document root] Geben Sie das Dokumentstammverzeichnis des Webservers an
--no-verify-ssl Zertifikatprüfung ignorieren
--tls-sni-01-port [port] Angeben eines Ports bei Verwendung von HTTPS in einer Authentifizierungsaufforderung
--http-01-port [port] Angeben eines Ports bei Verwendung von HTTP in einer Authentifizierungsaufforderung
--register-unsafely-without-email E-Mail-Registrierung weggelassen
--renew-by-default Auslassung der Bestätigung bei Erneuerung eines Zertifikats
-d [domain] Domänenspezifikation
--agree-tos Auslassung der Genehmigung bei der Ausstellung eines Zertifikats
--config-dir [dirctory] Speicherort der Konfigurationsdatei
--work-dir [directry] Speicherort des Arbeitsverzeichnisses
--logs-dir [directry] Speicherort des Protokollverzeichnisses
--staging Referenzinformationen
--debug Debug-Anzeige
-vvvvvvv Transzendentale Debug-Anzeige

Ergebnisse

Die Ergebnisse sind für Standalone und Webroot gleich.

console


$ sudo tree /etc/letsencrypt/

/etc/letsencrypt/
|-- accounts
|   `-- acme-v01.api.letsencrypt.org
|       `-- directory
|           `-- samplehashsamplehash
|               |-- meta.json
|               |-- private_key.json
|               `-- regr.json
|-- archive
|   `-- www.my-site.com
|       |-- cert1.pem
|       |-- cert2.pem
|       |-- chain1.pem
|       |-- chain2.pem
|       |-- fullchain1.pem
|       |-- fullchain2.pem
|       |-- privkey1.pem
|       `-- privkey2.pem
|-- csr
|   |-- 0000_csr-letsencrypt.pem
|   `-- 0001_csr-letsencrypt.pem
|-- keys
|   |-- 0000_key-letsencrypt.pem
|   `-- 0001_key-letsencrypt.pem
|-- live
|   `-- www.my-site.com
|       |-- cert.pem -> ../../archive/www.my-site.com/cert2.pem
|       |-- chain.pem -> ../../archive/www.my-site.com/chain2.pem
|       |-- fullchain.pem -> ../../archive/www.my-site.com/fullchain2.pem
|       `-- privkey.pem -> ../../archive/www.my-site.com/privkey2.pem
`-- renewal
    `-- www.my-site.com.conf

Geben Sie für den Webserver den symbolischen Link unter live an und verwenden Sie ihn. Die Endnummer der Datei wird entsprechend der Anzahl der Ausführungen erhöht. Da die Verzeichnisse unter Live für jede Domäne getrennt sind, können mehrere Verzeichnisse verwaltet werden. Das Verzeichnis der CSR-Schlüssel ist nicht in Domänen unterteilt, sodass es unabhängig von der Domäne gemeinsam erhöht wird.

Bei der ersten Ausführung wird eine Einstellungsdatei generiert. Ab dem zweiten Mal wird es ausgeführt, nachdem die Einstellungsdatei unter Verwendung des Domänennamens als Schlüssel gelesen wurde. Daher ist es nicht erforderlich, das in der Einstellungsdatei beschriebene als zweites Migrationsargument zu übergeben (glaube ich).

Offizielle HP # -Konfigurationsdatei

console


# This is an example of the kind of things you can do in a configuration file.
# All flags used by the client can be configured here. Run Let's Encrypt with
# "--help" to learn more about the available options.

# Use a 4096 bit RSA key instead of 2048
rsa-key-size = 4096

# Always use the staging/testing server
server = https://acme-staging.api.letsencrypt.org/directory

# Uncomment and update to register with the specified e-mail address
# email = [email protected]

# Uncomment and update to generate certificates for the specified
# domains.
# domains = example.com, www.example.com

# Uncomment to use a text interface instead of ncurses
# text = True

# Uncomment to use the standalone authenticator on port 443
# authenticator = standalone
# standalone-supported-challenges = tls-sni-01

# Uncomment to use the webroot authenticator. Replace webroot-path with the
# path to the public_html / webroot folder being served by your web server.
# authenticator = webroot
# webroot-path = /usr/share/nginx/html

Wenn Sie HTTPS für Nginx unterstützen möchten, können Sie dies wie folgt einstellen!

bash:/etc/nginx/conf.d/example_ssl.conf



# HTTPS server

server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /etc/letsencrypt/live/www.my-site.com/fullchain.pem; #hinzufügen
    ssl_certificate_key  /etc/letsencrypt/live/www.my-site.com/privkey.pem; #hinzufügen
#    ssl_certificate      /etc/nginx/cert.pem; #Auskommentieren
#    ssl_certificate_key  /etc/nginx/cert.key; #Auskommentieren

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

Schließlich

Das ist alles. Der Eindruck ist, dass es einfach zu bedienen und auf Sicherheit ausgelegt ist. Es gibt jedoch einige Stimmen, die besagen, dass es nicht möglich ist, auf der Host-Seite "sudo" zu drücken, wenn ein Befehl ausgeführt wird (die Verschlüsselung kann nicht so sehr als vertrauenswürdig eingestuft werden), und es gibt einen entsprechenden. diafygi/letsencrypt-nosudo

Let's Encrypt wird der Zertifikatbranche großen Schaden zufügen. Wenn Sie eine Chance haben, probieren Sie es bitte aus.

Recommended Posts

SSL, das kostenlos genutzt werden kann! Lassen Sie uns gemeinsam bei der Arbeit oder zu Hause verschlüsseln!
Die Geschichte des Wechsels von WoSign zu Let's Encrypt für ein kostenloses SSL-Zertifikat