GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Primeros pasos con Lets Encrypt SSL Certificates en Ubuntu

Este tutorial lo guiará a través de su primera configuración de un sitio web SSL con la certificación Let's Encrypt. Let's Encrypt es una nueva autoridad SSL que proporciona certificados SSL gratuitos. Vamos a utilizar dos tutoriales existentes ("Cómo configurar un sitio web SSL intermedio compatible con el certificado Let's Encrypt" y "El servidor perfecto - Ubuntu 15.10 (Wily Werewolf) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot y ISPConfig 3").

La configuración que se describe aquí es compatible con cualquier servidor LAMP de Ubuntu, por lo que también puede usar esta como configuración básica.

Este tutorial le mostrará cómo configurar Let's Encrypt en servidores sin ISPConfig 3, ya que pronto habrá una implementación directa del servicio Let's Encrypt en la próxima versión de ISPConfig 3 (versión 3.1). Entonces, si planea usar ISPConfig, espere la versión 3.1 y también un nuevo tutorial.

Creando el sitio web

El primer paso es crear la configuración y el directorio del sitio web y habilitar SSL (Apache mod_ssl) para ello. Depende de usted si usa la configuración predeterminada para un sitio web en un servidor o si planea usar varios hosts virtuales para alojar más de un dominio. Para un uso más confiable y escalable, crearé una configuración de host virtual para mi dominio de "laboratorio" isp1.cloudapp.net desde Azure.

Todos los vhosts se almacenan en el directorio /etc/apache2/sites-available de forma predeterminada en Ubuntu y Debian. Ejecute el siguiente comando para recuperar una lista de archivos de configuración de vhost existentes.

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

Mi salida se ve así:

[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

Ahora podemos usar el archivo de configuración "predeterminado" para clonarlo y editarlo o podemos usar nuestra propia configuración. Prefiero usar mi propia configuración, ya que lo hago durante muchos años, así que creemos un nuevo host virtual creando el archivo:

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

En este archivo, pegue el siguiente contenido:

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

Reemplace el nombre de dominio con su dominio dondequiera que ocurra y guarde el archivo. Para activar la configuración, ejecute:

a2ensite isp1.cloudapp.net.conf

Ahora lea las carpetas para el sitio 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

Reinicie apache para aplicar la nueva configuración:

sudo service apache2 restart

Ahora tenemos que generar los archivos de certificado.

Instala Let's Encrypt y genera tu primer certificado SSL

  Prefiero usar el inicio de sesión de root para la administración en lugar de ejecutar sudo antes de cada comando, así que vamos a su al usuario root:

sudo su

Navegue a su directorio de inicio raíz:

cd ~root

Instale git para obtener los archivos del repositorio de Let's Encrypt git:

apt-get install git

Ahora clone el repositorio git de Let's Encrypt:

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

Navega a tu nueva carpeta de letsencrypt:

cd letsencrypt

Y solicita tu certificado SSL:

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

Si solicita un certificado para el dominio maestro (dominio de 1 nivel, también conocido como cloudapp.net), use el parámetro -d dos veces. Con y sin prefijo www así:

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

Si no lo hace, el certificado no será válido para los visitantes que abran su sitio con el prefijo www.

También puede agregar otros subdominios a un certificado. Por ejemplo, si su subdominio admin.cloudapp.net coincide con el mismo sitio (la misma carpeta en el servidor), también debe agregarlo a este certificado. Desafortunadamente, no puede usar un comodín como (*.cloudapp.net) con let's encrypt.

Let's Encrypt actualizará automáticamente todas las dependencias y lo guiará a través de su configuración. Todo lo que necesita hacer es esperar a que aparezca la ventana que le pide su dirección de correo electrónico. Esta dirección se usa solo para recuperar datos perdidos.

Sus nuevas claves ahora se almacenan en /etc/letsencrypt/ de forma predeterminada. Vamos a vincularlos al directorio de nuestro sitio web para que podamos administrar las claves más tarde.

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

Ahora debería poder acceder a su sitio web con SSL. Let's Encrypt le informará automáticamente sobre la caducidad de los certificados a tiempo enviándole un correo electrónico a la dirección que proporcionó durante la instalación de Let's Encrypt.


Ubuntu
  1. Introducción a los contenedores LXD en Ubuntu 16.04

  2. Asegure Nginx con Lets Encrypt en Ubuntu 20.04

  3. Asegure Apache con Lets Encrypt en Ubuntu 20.04

  4. Cómo configurar Apache Subversion con Lets encrypt SSL en Ubuntu 18.04

  5. Primeros pasos con acme.sh Cliente Lets Encrypt SSL

Cómo instalar ProjectSend con Apache y Lets Encrypt SSL en Ubuntu 20.04

Cómo instalar Moodle con Nginx y Lets Encrypt SSL en Ubuntu 20.04

Cómo instalar MediaWiki con Nginx y Lets Encrypt SSL en Ubuntu 20.04

Cómo instalar Gitea con Nginx y Lets Encrypt SSL gratis en Ubuntu 20.04

Cómo instalar certificados SSL de Lets Encrypt en Ubuntu 18.04

Primeros pasos con el sistema de archivos ZFS en Ubuntu 19.10