GNU/Linux >> Znalost Linux >  >> Cent OS

Zdarma SSL pro Nginx na Centos od Let’s encrypt

Přehled

Let’s encrypt je certifikační autorita, která poskytuje jednoduchý způsob, jak zdarma získat certifikát SSL/TLS pro váš web, a tím umožnit šifrované https na webových serverech. Let’s Encrypt zjednodušuje pořízení a instalaci SSL certifikátu pomocí softwaru s názvem CertBot. Tento softwarový klient slouží plně automatizovanému procesu pro webové servery Apache. Bezplatné SSL certifikáty od Let’s Encrypt však lze ručně nainstalovat na jakýkoli webový server s několika interními úpravami.

V tomto tutoriálu si ukážeme postup použití certbot-auto Zašifrujte klienta, abyste získali bezplatný certifikát SSL a použili jej s Nginx na Ubuntu 14.04. Tento tutoriál vám také vysvětlí, jak automaticky obnovit váš certifikát SSL. Pokud používáte jiný webový server, jednoduše postupujte podle dokumentace k vašemu webovému serveru a zjistěte, jak používat certifikát s vaším nastavením.

Předpoklad

  • Uživatel bez oprávnění root s právy Sudo
  • Musíte vlastnit nebo mít administrativní kontrolu nad doménou, pro kterou chcete získat certifikát SSL.
  • Záznam A vytvořený na panelu DNS, který odkazuje vaši doménu na veřejnou IP adresu vašeho serveru. Je to vyžadováno kvůli tomu, jak Let’s Encrypt ověřuje, že vlastníte doménu, pro kterou vydává certifikát. Například pokud chcete získat certifikát pro example.com , tato doména se musí přenést na váš server, aby proces ověření fungoval. Naše nastavení bude používat example.com a www.example.com jako názvy domén, takže jsou vyžadovány oba záznamy DNS

Krok 1 — Instalace klienta Let's Encrypt

Zpočátku si musíte na svůj server stáhnout softwarového klienta CertBot. CertBot si můžete stáhnout z oficiálních stránek EFF.

Stáhněte si software  CertBot do adresáře /usr/local/sbin directory on your server:

cd /usr/local/sbin
sudo wget https://dl.eff.org/certbot-auto
$ cd /usr/local/sbin   
sudo wget https://dl.eff.org/certbot-auto
[sudo] password for example: 
--2016-11-28 13:26:28--  https://dl.eff.org/certbot-auto
Resolving dl.eff.org... 173.239.79.196
Connecting to dl.eff.org|173.239.79.196|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 44442 (43K) [text/plain]
Saving to: `certbot-auto'

100%[======================================>] 44,442       154K/s   in 0.3s    

2016-11-28 13:26:30 (154 KB/s) - `certbot-auto' saved [44442/44442]

Cert-Bot je nyní stažen do /usr/local/sbin na vašem serveru. Nyní udělejte soubor spustitelným zadáním následujícího příkazu:

sudo chmod a+x /usr/local/sbin/certbot-auto

Software Cerbot-auto je nyní připraven k instalaci.

Krok 2 – Získejte certifikát

Existuje několik způsobů, jak získat certifikát SSL od Let’s Encrypt prostřednictvím různých pluginů. Chcete-li získat certifikát SSL, musíte získat ověřovací plugin. Ujistěte se, že tyto pluginy získají pouze certifikát a certifikát musíte nainstalovat ručně.

V tomto tutoriálu použijeme plugin s názvem Webroot pro ověření.

Plugin Webroot

Plugin Webroot vygeneruje exkluzivní soubor v adresáři / .well-known v kořenovém adresáři dokumentů, ke kterému lze přistupovat pomocí Let's Encrypt přes váš webový server, čímž se dokončí ověření vaši pravomoc nad doménou. Možná budete muset nakonfigurovat oprávnění pro soubor v / .well-known.

Pokud jste Ngnix ještě nenainstalovali, nainstalujte jej pomocí níže uvedených příkazů:

sudo yum update
sudo yum install ngnix

Aby byl soubor přístupný pro certbot-auto, proveďte požadované změny v konfiguračním souboru Nginx. Konfigurační soubor ngnix je standardně umístěn v adresáři /etc/nginx/sites-available/default. Upravme konfigurační soubor:

sudo vim /etc/nginx/sites-available/default

Přidejte do souboru následující blok umístění:

Přidat k serveru SSL block
server {
        . . .

        location ~ /.well-known {
                allow all;
        }

        . . .
}

Budete také chtít vyhledat kořenový adresář vašeho dokumentu vyhledáním root direktiva, protože cesta je vyžadována pro použití pluginu Webroot. Pokud používáte výchozí konfigurační soubor, kořenový adresář bude /usr/share/nginx/html .

Uložte soubor stisknutím klávesy Esc a následně :wq! a stiskněte klávesu enter.

Můžete zkontrolovat, zda konfigurační soubor neobsahuje syntaktické chyby:

sudo nginx -t

Pokud zjistíte, že konfigurační soubor neobsahuje chyby syntaxe, restartujte službu ngnix

sudo service nginx restart

Nyní můžeme k ověření použít plugin webroot, protože známe přesné umístění cesty webroot. Pro vyžádání certifikátu SSL pomocí pluginu webroot použijte následující příkaz:

certbot-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com

Názvy domén musí být specifikovány pomocí -d volba. Pokud chcete, aby jeden certifikát fungoval s více názvy domén (např. example.com a www.example.com ), nezapomeňte zahrnout všechny, počínaje doménou nejvyšší úrovně (např. example.com ).

Poznámka: certbot-auto software vyžaduje práva superuživatele, takže pokud jste nepoužili sudo, budete požádáni o zadání hesla nedávno.

Když certbot-auto inicializuje, budete vyzváni k zadání některých informací. Přesné výzvy se mohou lišit v závislosti na tom, zda jste použili certbot-auto klient dříve. Zadejte potřebné informace a na konci vyberte Souhlasím.

Výstup:
IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to [email protected]
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your
   cert will expire on 2016-03-15. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   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 Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Poznamenejte si cestu a datum vypršení platnosti z výstupu.

Poznámka k firewallu: Pokud se zobrazí chyba jako Failed to connect to host for DVSNI challenge , může být nutné nakonfigurovat bránu firewall vašeho serveru tak, aby umožňovala provoz TCP na portu 80 a 443 .

Poznámka: Pokud vaše doména směruje přes službu DNS, jako je CloudFlare, budete ji muset dočasně deaktivovat, dokud certifikát nezískáte.

Soubory certifikátů

Po získání certifikátu budete mít následující soubory v kódování PEM:

  • cert.pem: certifikát vaší domény
  • chain.pem: Certifikát řetězce Let’s Encrypt
  • fullchain.pem:cert.pem a chain.pem kombinované
  • privkey.pem: Soukromý klíč vašeho certifikátu

Můžete zkontrolovat, zda soubory existují spuštěním tohoto příkazu (nahrazením názvu vaší domény):

sudo ls -l /etc/letsencrypt/live/your_domain_name

Výstupem by měly být čtyři výše uvedené soubory certifikátů. Během okamžiku nakonfigurujete svůj webový server tak, aby používal fullchain.pem jako soubor certifikátu a privkey.pem jako soubor klíče certifikátu.

Vygenerovat silnou skupinu Diffie-Hellman

Pro další zvýšení zabezpečení vygenerujte silnou skupinu Diffie-Hellman pomocí příkazu:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Cesta skupiny DH by byla /etc/ssl/certs/dhparam.pem 2048

Krok 3 — Konfigurace TLS/SSL na webovém serveru (Nginx)

Nyní musíte nakonfigurovat webový server Nginx, abyste jej mohli používat. Upravte konfiguraci Nginx, která obsahuje váš blok serveru:

sudo nano /etc/nginx/sites-available/default

Najděte server blok. Přidejte komentář nebo smazat řádky, které konfigurují tento blok serveru tak, aby naslouchal na portu 80. Ve výchozí konfiguraci by měly být tyto dva řádky odstraněny:

Odstranění konfigurace Nginx
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

Nakonfigurujeme tento blok serveru tak, aby naslouchal na portu 443 s povoleným SSL. Na vašem server { bloku, přidejte následující řádky, ale nahraďte všechny instance example.com s vlastní doménou:

Přidání konfigurace Nginx — 1 ze 3
        listen 443 ssl;

        server_name example.com www.example.com;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

To vašemu serveru umožní používat SSL a říká mu, aby použil certifikát Let's Encrypt SSL, který jsme získali dříve.

Chcete-li povolit pouze nejbezpečnější protokoly a šifry SSL a používat silnou skupinu Diffie-Hellman, kterou jsme vygenerovali, přidejte do stejného bloku serveru následující řádky:

Přidání konfigurace Nginx — 2 ze 3
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security max-age=15768000;

A konečně, mimo původní blok serveru (který naslouchá na HTTPS, port 443), přidejte tento blok serveru pro přesměrování HTTP (port 80) na HTTPS.

Přidání konfigurace Nginx — 3 ze 3
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Uložit a ukončit.

Otestujte konfigurační soubor na chyby syntaxe zadáním:

sudo nginx -t

Jakmile ověříte, že neexistují žádné syntaktické chyby, uveďte změny v platnost restartováním Nginx:

sudo service nginx restart

Certifikát Let’s Encrypt TLS/SSL je nyní zaveden. V tomto okamžiku byste měli otestovat, že certifikát TLS/SSL funguje, návštěvou vaší domény přes HTTPS ve webovém prohlížeči.

Můžete použít zprávu Qualys SSL Labs Report, abyste viděli, jak skóre konfigurace vašeho serveru:

Ve webovém prohlížeči:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com

Toto nastavení SSL by mělo hlásit A+ hodnocení.

Krok 4 — Nastavení automatického obnovení

Certifikáty Let’s Encrypt jsou platné 90 dní, ale doporučujeme je každých 60 dní obnovovat, aby se vyloučila chyba. V době psaní tohoto článku není automatická obnova stále dostupná jako funkce samotného klienta, ale certifikáty můžete obnovit ručně spuštěním certbot-auto klient s renew možnost.

Chcete-li spustit proces obnovení pro všechny nainstalované domény, spusťte tento příkaz:

certbot-auto renew

Vzhledem k tomu, že jsme certifikát nainstalovali nedávno, příkaz pouze zkontroluje datum vypršení platnosti a vytiskne zprávu s informací, že certifikát ještě není kvůli obnově. Výstup by měl vypadat takto:

Výstup:
Checking for new version...
Requesting root privileges to run letsencrypt...
   /home/sammy/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

Všimněte si, že pokud jste vytvořili spojený certifikát s více doménami, ve výstupu se zobrazí pouze název základní domény, ale obnovení by mělo být platné pro všechny domény zahrnuté v tomto certifikátu .

Praktický způsob, jak zajistit, že vaše certifikáty nebudou zastaralé, je vytvořit úlohu cron, která bude za vás pravidelně provádět příkaz k automatické obnově. Vzhledem k tomu, že obnovení nejprve zkontroluje datum vypršení platnosti a provede obnovení pouze v případě, že do vypršení platnosti certifikátu zbývá méně než 30 dní, je bezpečné vytvořit úlohu cron, která se spouští například každý týden nebo dokonce každý den.

Pojďme upravit crontab a vytvořit novou úlohu, která bude každý týden spouštět příkaz k obnovení. Chcete-li upravit crontab pro uživatele root, spusťte:

sudo crontab -e

Přidejte následující řádky:

crontab entry
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload

Uložte a ukončete. Tím se vytvoří nová úloha cron, která provede certbot-auto renew příkaz každé pondělí ve 2:30 a znovu načtěte Nginx ve 2:35 (takže bude použit obnovený certifikát). Výstup vytvořený příkazem bude přesměrován do souboru protokolu umístěného na adrese /var/log/le-renewal.log .


Cent OS
  1. Zabezpečení ISPConfig 3.1 pomocí bezplatného šifrovacího certifikátu SSL

  2. Let’s Encrypt:Získejte bezplatný certifikát SSL pomocí Certbotu

  3. Zabezpečený Apache pomocí Let's Encrypt na CentOS 7 – proces krok za krokem?

  1. Jak nainstalovat certifikát SSL na Apache pro CentOS 7

  2. Nainstalujte Let’s Encrypt na Centos 8

  3. Jak získat bezplatný certifikát SSL s SSL It! a Let's Encrypt na Plesku

  1. Cerbot Free SSL (Let’s Encrypt)

  2. Jak nainstalovat Let's Encrypt SSL na CentOS 7 se spuštěným webovým serverem Apache

  3. Jak nastavit Zašifrujeme certifikát SSL pomocí Nginx na CentOS 8 / RHEL 8 &CentOS 7 / RHEL 7