GNU/Linux >> Znalost Linux >  >> Ubuntu

Začínáme s Lets Encrypt SSL Certificates na Ubuntu

Tento tutoriál vás provede vaší úplně první konfigurací webu SSL s certifikací Let's Encrypt. Let's Encrypt je nová autorita SSL, která poskytuje bezplatné certifikáty SSL. Použijeme dva stávající návody („Jak nastavit středně kompatibilní web SSL s certifikátem Let's Encrypt“ a „Dokonalý server – Ubuntu 15.10 (Wily Werewolf) s Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot a ISPConfig 3”).

Zde popsané nastavení je kompatibilní s jakýmkoli serverem Ubuntu LAMP, takže jej můžete použít také jako základní nastavení.

Tento tutoriál vám ukáže, jak nastavit Let's Encrypt na serverech bez ISPConfig 3, protože brzy bude přímá implementace služby Let's Encrypt v příštím vydání ISPConfig 3 (verze 3.1). Pokud tedy plánujete používat ISPConfig, počkejte na vydání 3.1 a také na nový tutoriál.

Vytvoření webu

Prvním krokem je vytvoření konfigurace a adresáře webu a povolení SSL (Apache mod_ssl). Je jen na vás, zda použijete výchozí konfiguraci pro jeden web na serveru nebo plánujete používat více hostitelů vhost k hostování více než jedné domény. Pro spolehlivější a škálovatelnější použití vytvořím konfiguraci vhost pro svou „lab“ doménu isp1.cloudapp.net z Azure.

Všechny vhosty jsou na Ubuntu a Debianu standardně uloženy v adresáři /etc/apache2/sites-available. Spusťte následující příkaz a načtěte seznam existujících konfiguračních souborů vhost.

ls -l /etc/apache2/sites-available/

Můj výstup vypadá takto:

[email protected]:/home/falco# ls -l /etc/apache2/sites-available/
-rw-r--r-- 1 root root 1332 May 20 2015 000-default.conf
-rw-r--r-- 1 root root 6437 May 20 2015 default-ssl.conf

Nyní můžeme pro klonování použít "výchozí" konfigurační soubor a upravit jej nebo můžeme použít vlastní konfiguraci. Dávám přednost používání vlastní konfigurace, jak to dělám po mnoho let, takže vytvořte nového vhost vytvořením souboru:

vi /etc/apache2/sites-available/isp1.cloudapp.net.conf

Do tohoto souboru vložte následující obsah:

<VirtualHost *:80>
ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net

DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combinedScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

</VirtualHost>

<VirtualHost *:443>

ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net
DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combined

ScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html >
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin >
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

SSLEngine on
SSLCertificateFile /home/web/isp1.cloudapp.net /ssl.cert
SSLCertificateKeyFile /home/web/isp1.cloudapp.net /ssl.key
SSLCACertificateFile /home/web/isp1.cloudapp.net /ssl.ca
SSLCipherSuite 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:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-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:!KRB5-DES-CBC3-SHA
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

</VirtualHost>

Nahraďte název domény svou doménou, kdekoli se vyskytuje, a uložte soubor. Chcete-li aktivovat konfiguraci, spusťte:

a2ensite isp1.cloudapp.net.conf

Nyní znovu vytvořte složky pro web:

mkdir /home/web
mkdir /home/web/isp1.cloudapp.net
mkdir /home/web/isp1.cloudapp.net/public_html
mkdir /home/web/isp1.cloudapp.net/cgi-bin
mkdir /home/web/isp1.cloudapp.net/logs

Chcete-li použít novou konfiguraci, restartujte apache:

sudo service apache2 restart

Nyní musíme vygenerovat soubory certifikátu.

Nainstalujte si Let's Encrypt a vygenerujte svůj první certifikát SSL

  Dávám přednost použití přihlášení root pro administraci místo spouštění sudo před každým příkazem, takže su uživateli root:

sudo su

Přejděte do kořenového domovského adresáře:

cd ~root

Nainstalujte git pro načtení souborů úložiště git Let's Encrypt:

apt-get install git

Nyní naklonujte úložiště git Let's Encrypt:

git clone https://github.com/letsencrypt/letsencrypt.git letsencrypt

Přejděte do své nové složky letsencrypt:

cd letsencrypt

A vyžádejte si certifikát SSL:

./letsencrypt-auto certonly --webroot -w /home/web/isp1.cloudapp.net/public_html -d isp1.cloudapp.net

Pokud požadujete certifikát pro hlavní doménu (doména 1 úrovně aka cloudapp.net), použijte parametr -d dvakrát. S předponou www a bez ní, jako je tato:

 ./letsencrypt-auto certonly --webroot -w /home/web/cloudapp.net/public_html -d cloudapp.net -d www.cloudapp.net

Pokud tak neučiníte, certifikát nebude platný pro návštěvníky otevírající váš web s předponou www.

K jednomu certifikátu můžete přidat i další subdomény. Pokud se například vaše subdoména admin.cloudapp.net shoduje se stejným webem (stejnou složkou na serveru), měli byste ji přidat také k tomuto certifikátu. S let's encrypt bohužel nemůžete použít zástupnou kartu jako (*.cloudapp.net).

Let's Encrypt automaticky aktualizuje všechny závislosti a provede vás jeho nastavením. Vše, co musíte udělat, je počkat na okno s výzvou k zadání vaší e-mailové adresy. Tato adresa se používá pouze pro obnovu ztracených dat.

Vaše nové klíče jsou nyní standardně uloženy v /etc/letsencrypt/. Propojíme je s adresářem našich webových stránek, abychom klíče mohli spravovat později.

ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/cert1.pem /home/web/isp1.cloudapp.net/ssl.cert
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/chain1.pem /home/web/isp1.cloudapp.net/ssl.ca
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/privkey1.pem /home/web/isp1.cloudapp.net/ssl.key

Nyní byste měli mít přístup k vašemu webu pomocí SSL. Let's Encrypt vás bude automaticky včas informovat o vypršení platnosti certifikátů zasláním e-mailu na adresu, kterou jste uvedli při instalaci Let's Encrypt.


Ubuntu
  1. Začínáme s kontejnery LXD na Ubuntu 16.04

  2. Zabezpečte Nginx pomocí Lets Encrypt na Ubuntu 20.04

  3. Začínáme s acme.sh Umožňuje šifrovat klienta SSL

  1. Zabezpečte Apache pomocí Lets Encrypt na Ubuntu 20.04

  2. Jak nastavit Apache Subversion pomocí šifrování SSL na Ubuntu 18.04

  3. Jak nainstalovat Nextcloud s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  1. Jak nainstalovat Magento 2 s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  2. Začínáme s WP-CLI na Ubuntu 15.10

  3. Nainstalujte Automad CMS s Nginx a Lets Encrypt SSL na Ubuntu 18.04