GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Iniziare con Lets Encrypt SSL Certificates su Ubuntu

Questo tutorial ti guiderà attraverso la tua prima configurazione di un sito Web SSL con certificazione Let's Encrypt. Let's Encrypt è una nuova autorità SSL che fornisce certificati SSL gratuiti. Utilizzeremo due tutorial esistenti ("Come configurare un sito Web SSL compatibile intermedio con il certificato Let's Encrypt" e "The Perfect Server - Ubuntu 15.10 (Wily Werewolf) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3").

La configurazione qui descritta è compatibile con qualsiasi server Ubuntu LAMP, quindi puoi utilizzare anche questa come configurazione di base.

Questo tutorial ti mostrerà come configurare Let's Encrypt su server senza ISPConfig 3 poiché presto ci sarà un'implementazione diretta del servizio Let's Encrypt nella prossima versione di ISPConfig 3 (versione 3.1). Quindi, se prevedi di utilizzare ISPConfig, attendi la versione 3.1 e anche un nuovo tutorial.

Creazione del sito web

Il passaggio 1 consiste nel creare la configurazione e la directory del sito Web e abilitare SSL (Apache mod_ssl) per esso. Dipende da te se utilizzi la configurazione predefinita per un sito web su un server o se prevedi di utilizzare più vhost per ospitare più di un dominio. Per un utilizzo più affidabile e scalabile, creerò una configurazione vhost per il mio dominio "lab" isp1.cloudapp.net da Azure.

Tutti i vhost sono archiviati nella directory /etc/apache2/sites-disponibili per impostazione predefinita su Ubuntu e Debian. Esegui il comando seguente per recuperare un elenco di file di configurazione vhost esistenti.

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

Il mio output è simile a questo:

[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

Ora possiamo usare il file di configurazione "predefinito" per clonarlo e modificarlo oppure possiamo usare la nostra configurazione. Preferisco usare la mia configurazione come faccio da molti anni, quindi creiamo un nuovo vhost creando il file:

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

In questo file incolla il seguente contenuto:

<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>

Sostituisci il nome di dominio con il tuo dominio ovunque si trovi e salva il file. Per attivare la configurazione, eseguire:

a2ensite isp1.cloudapp.net.conf

Ora crea le cartelle per il sito 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

Riavvia Apache per applicare la nuova configurazione:

sudo service apache2 restart

Ora dobbiamo generare i file del certificato.

Installa Let's Encrypt e genera il tuo primo certificato SSL

  Preferisco usare il login di root per l'amministrazione invece di eseguire sudo prima di ogni comando, quindi andiamo su per root utente:

sudo su

Passa alla directory principale delle tue radici:

cd ~root

Installa git per recuperare i file del repository git Let's Encrypt:

apt-get install git

Ora clona il repository git Let's Encrypt:

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

Passa alla tua nuova cartella Letencrypt:

cd letsencrypt

E richiedi il tuo certificato SSL:

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

Se richiedi un certificato per il dominio principale (dominio di 1 livello, noto anche come cloudapp.net), utilizza il parametro -d due volte. Con e senza prefisso www come questo:

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

In caso contrario, il certificato non sarà valido per i visitatori che aprono il tuo sito con il prefisso www.

Puoi anche aggiungere altri sottodomini a un certificato. Ad esempio, se il tuo sottodominio admin.cloudapp.net corrisponde allo stesso sito (la stessa cartella sul server), dovresti aggiungerlo anche a questo certificato. Sfortunatamente, non puoi utilizzare un carattere jolly come (*.cloudapp.net) con Let's encrypt.

Let's Encrypt aggiornerà automaticamente tutte le dipendenze e ti guiderà attraverso la sua configurazione. Tutto quello che devi fare è attendere la finestra di richiesta che ti chiede il tuo indirizzo e-mail. Questo indirizzo viene utilizzato solo per recuperare i dati persi.

Le tue nuove chiavi sono ora archiviate in /etc/letsencrypt/ per impostazione predefinita. Li collegheremo alla directory del nostro sito Web in modo da poter gestire le chiavi in ​​un secondo momento.

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

Ora dovresti essere in grado di accedere al tuo sito web con SSL. Let's Encrypt ti informerà automaticamente della scadenza dei certificati in tempo inviandoti una e-mail all'indirizzo che hai fornito durante l'installazione di Let's Encrypt.


Ubuntu
  1. Guida introduttiva ai contenitori LXD su Ubuntu 16.04

  2. Proteggi Nginx con Lets Encrypt su Ubuntu 20.04

  3. Proteggi Apache con Lets Encrypt su Ubuntu 20.04

  4. Come configurare Apache Subversion con Lets crittografa SSL su Ubuntu 18.04

  5. Iniziare con acme.sh Lets Encrypt SSL client

Come installare ProjectSend con Apache e Lets Encrypt SSL su Ubuntu 20.04

Come installare Moodle con Nginx e Lets Encrypt SSL su Ubuntu 20.04

Come installare MediaWiki con Nginx e Lets Encrypt SSL su Ubuntu 20.04

Come installare Gitea con Nginx e Lets Encrypt SSL gratuito su Ubuntu 20.04

Come installare consente di crittografare i certificati SSL su Ubuntu 18.04

Guida introduttiva al filesystem ZFS su Ubuntu 19.10