Hier werde ich vorstellen, wie man eine Site-SSL mit Let's Encrypt und Nginx erstellt und was ich getan habe, als ich mehrere Sites auf einem Server mit der Nginx-Funktion betrieben habe und alle SSL erstellt habe. Machen. Wir haben die Nginx-Konfigurationsdatei veröffentlicht. Weitere Informationen finden Sie hier. https://github.com/TakuKobayashi/ActivatingNginxConf
SSL ist ein Mechanismus zur Kommunikation durch Verschlüsselung von Daten. Wenn Sie SSL aktivieren, können Sie URLs wie https: // (für HTTP) und wss: // (für Websocket) wie unten gezeigt verwenden.
Einzelheiten finden Sie unter hier usw.
Ein SSL-Zertifikat </ b> </ font> ist erforderlich, damit der Server SSL-fähig und kommunikationsfähig ist. SSL-Zertifikate werden allgemein als [Zertifizierungsstelle] bezeichnet (https://ja.wikipedia.org/wiki/%E8%AA%8D%E8%A8%BC%E5%B1%80) und sind vertrauenswürdig. Sie müssen Geld von den drei Parteien bezahlen, um ein Zertifikat zu erhalten. Die Kosten betragen Zehntausende bis Hunderttausende Yen pro Jahr </ font>. Es ist hoch...
Let's Encrypt ist eine Zertifizierungsstelle (Gruppe / Projekt), die kostenlos SSL-Zertifikate ausstellt </ font>.
Um ein SSL-Zertifikat mit Let's Encrypt zu erhalten, muss Python 2.7 oder höher installiert sein. Installieren Sie daher Python 2.7 oder höher. Ich habe Python installiert, nachdem ich Pyenv eingegeben habe, damit ich zwischen Python-Versionen wechseln kann.
yum install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel bzip2 sqlite
zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel
git clone git://github.com/yyuu/pyenv.git
cd pyenv/
vi ~/.bashrc
Suchen Sie den Speicherort von pyenv in .bashrc (hier in / app / library / pyenv), schreiben Sie Folgendes und führen Sie es durch den Pfad.
export PYENV_ROOT="/app/library/pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
fi
Aktivieren Sie den festgelegten Pfad.
source ~/.bashrc
Und
pyenv
Wenn kein Fehler vorliegt, wird der Pfad übergeben.
pyenv install --list
Hier installieren wir Python 2.7.13
pyenv install 2.7.13
pyenv global 2.7.13
mit diesem
python
Wird ausgeführt und wenn kein Fehler auftritt, ist die Installation abgeschlossen.
Wenn Sie das nächste Mal certbot verwenden, um ein Zertifikat abzurufen, wird überprüft, ob der Server vorhanden ist. Sie müssen einen dedizierten Pfad erstellen, um diese Prüfung durchzuführen. Dieses Mal erstellen wir ein Verzeichnis unter dem Dokumentstamm. Verwenden Sie Nginx Für Nginx befindet sich das Dokumentstammverzeichnis im [nginx-Stammverzeichnis] /conf.d/default.conf. In diesem Fall handelt es sich um den unten beschriebenen Inhalt.
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
Erstellen Sie daher ein leeres Verzeichnis, um den Pfad vom Dokumentstamm wie unten gezeigt festzulegen.
mkdir [Nginx-Stammverzeichnis]/html/.well-known
Bearbeiten Sie als Nächstes [nginx-Stammverzeichnis] /nginx.conf, damit der erstellte Pfad auf der Nginx-Seite verwendet werden kann.
http{
...
server {
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
}
}
Starten Sie dann nginx neu, damit die Änderungen übernommen werden.
service nginx restart
certbot ist ein Tool von Let’s Encrypt und ein Agent (Client), der mit Let’s Encrypt kommuniziert. Es gibt eine Methode, die Git nicht verwendet, aber dieses Mal werden wir sie mit der Methode installieren, die Git verwendet.
git clone https://github.com/certbot/certbot
cd certbot/
./certbot-auto certonly
Dann gibt es die folgenden Ankündigungen, so dass wir verschiedene Einstellungen vornehmen werden.
How would you like to authenticate with the ACME CA?
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
Select the appropriate number [1-2] then enter: 2
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[Mail Adresse]
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
(A)gree/(C)ancel: A
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
(Y)es/(N)o: Y
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel):[Domainname](WennSiemehrereDomänenfestlegenmöchten,listenSiediesedurchKommasgetrenntauf.Hierue4yochi.AufNetzsetzen)
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ue4yochi.net
Select the webroot for ue4yochi.net:
1: Enter a new webroot
Press 1 [enter] to confirm the selection (press 'c' to cancel): 1
Input the webroot for ue4yochi.net: (Enter 'c' to cancel):[Der Pfad des oben erstellten Verzeichnisses]
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/ue4yochi.net/fullchain.pem. Your cert will
expire on 2017-10-03. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew all of your certificates, run
"certbot-auto renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Über, In / etc / letsencrypt / live / [Domainname] / </ font> Wenn Sie über die Dateien fullchain.pem </ font> und privkey.pem </ font> verfügen, haben Sie das Zertifikat erhalten.
Bearbeiten Sie die Datei nginx.conf wie folgt:
http{
...
server {
listen 443 ssl;
server_Name Domain A.;
...
ssl_certificate /etc/letsencrypt/live/[Domainname]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[Domainname]/privkey.pem;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
}
Starten Sie dann nginx neu, damit die Änderungen übernommen werden.
service nginx restart
Wenn der Server jetzt läuft https://ドメインAにブラウザでアクセスすることができれば、SSL化完了です。
Die oben genannte SSL-Unterstützung in Nginx kann auch angewendet werden, wenn versucht wird, mehrere Standorte auf einem Server zu betreiben. Ich möchte nicht zu viel Geld ausgeben, daher wäre es schön, wenn ich mehrere Websites auf einem Server betreiben könnte ♪ Darüber hinaus wäre es großartig, wenn alle SSL unterstützen könnten Eine oder mehrere Domänen sind jedoch erforderlich, um mehrere Standorte auf einem Server zu betreiben. </ B> </ font>.
Zu diesem Zeitpunkt sind die Einstellungen für eine Site bereits abgeschlossen. Erstellen Sie zunächst einen überprüfbaren Pfad wie den ersten, damit Sie mit certbot ein Zertifikat für den zweiten Standort erhalten können. Sie können das gleiche wie das erste verwenden, aber Sie müssen jedes einstellen. Beschreiben Sie die Nginx-Konfigurationsdatei wie folgt.
http{
...
server {
listen 443 ssl;
server_Name Domain A.;
...
ssl_certificate /etc/letsencrypt/live/[Domainname]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[Domainname]/privkey.pem;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
server {
listen 443 ssl;
server_Name Domain B.;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
Starten Sie dann nginx neu, damit die Änderungen übernommen werden.
service nginx restart
Geben Sie Folgendes wie oben beschrieben ein.
./certbot-auto certonly
Wenn Sie in diesem Fall bereits ein Zertifikat erhalten haben und eine neue Domäne erhalten und ein Zertifikat hinzufügen möchten, können Sie es anwenden, indem Sie dasselbe Verfahren ausführen. Lesen Sie weiter die Ankündigungen, die herauskamen,
...
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel):Domain A.,Domäne B.,...
...
Wenn die oben genannten Fragen gestellt werden, können Zertifikate ausgestellt werden, die mehreren Domänen entsprechen, indem mehrere Arten von Domänen angeordnet werden, die durch ,. Zum Zeitpunkt der Einstellung werden Sie gefragt, wo Sie die einzelnen Einstellungen überprüfen sollen. Dies ist jedoch in Ordnung, da Sie dieselbe angeben.
Zertifikate für mehrere Domänen werden in derselben Datei am selben Speicherort wie im ersten Fall oben festgelegt. Ändern Sie daher die Datei nginx.conf wie folgt, damit sie bei der Anwendung auf mehrere Domänen identisch ist. Ich werde.
http{
...
server {
listen 443 ssl;
server_Name Domain A.;
...
ssl_certificate /etc/letsencrypt/live/[Domainname]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[Domainname]/privkey.pem;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
server {
listen 443 ssl;
server_Name Domain B.;
ssl_certificate /etc/letsencrypt/live/[Domainname]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[Domainname]/privkey.pem;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
}
Starten Sie dann nginx neu, damit die Änderungen übernommen werden.
service nginx restart
Wenn der Server jetzt läuft https://ドメインA und https://ドメインB Wenn Sie mit einem Browser darauf zugreifen können, sind beide SSL-fähig.
Wenn Sie den obigen Server so einstellen, dass mehrere verschiedene Domänen angezeigt werden können, hat die in nginx.conf beschriebene obere Einstellung Vorrang. Zum Beispiel, wenn Sie die folgende URL eingeben https://[IPアドレス] Oder https://[DNS名] Wenn Sie eingeben, wird die Site von Domain A angezeigt.
Das Ablaufdatum des von Let's Encrypt erhaltenen Zertifikats beträgt 3 Monate </ font>. Daher muss das Zertifikat vor Ablauf erneuert werden. Wenn Sie das Zertifikat automatisch erneuern möchten, können Sie es automatisch erneuern, indem Sie cron einstellen.
crontab -e
Öffnen Sie die Cron-Einstellungen mit und stellen Sie sie wie folgt ein.
0 4 1 * * [certbot-mit auto bestehen]/certbot-auto renew && service nginx reload
Jetzt können Sie das SSL-Zertifikat automatisch erneuern und die Einstellungen in Nginx widerspiegeln. (Der oben beschriebene Vorgang wird einmal im Monat durchgeführt, um zu überprüfen, ob das Zertifikat erneuert wurde.)
SSL-Zertifikat von Let's Encrypt (Certbot) in Nginx + Reverse-Proxy-Umgebung automatisch erneuern, ohne den Webserver anzuhalten - Qiita Die Geschichte des Versuchs, mit Nginx als Reverse-Proxy zu verschlüsseln - Qiita Installieren Sie Let's Encrypt auf einem Server unter Nginx und stellen Sie ein SSL-Zertifikat aus --UTALI So stellen Sie die Ausstellung und automatische Verlängerung von SSL-Zertifikaten mit Let's Encrypt + Nginx - Qiita ein Der Lichtgeschwindigkeits-WEB-Server (nginx) wird durch Verschlüsselung in SSL und HTTP / 2 konvertiert. Stellen Sie dann die Sicherheitsbewertung auf A + ein. --Qiita Veröffentlichen Sie eine sichere Website mit Let’s Encrypt SSL-Zertifikat - Sakura Knowledge
Recommended Posts