En el post anterior describí los pasos para tener un sitio configurado con certificados SSL gratuitos y de una forma sencilla con Let's encrypt para un sitio en donde tengamos acceso SSH directo al servidor donde se encuentra alojado nuestro sitio. Pero también es posible generar los certificados y utilizarlos en un servidor de hosting compartido. Para esto debemos instalar y ejecutar letsencript en nuestra PC, generar los certificados localmente y luego subirlos al servidor. Para realizar esto, ejecutamos letsencrypt con los siguientes parámetros:
# letsencrypt certonly --manualEl comando anterior nos advertirá que va a guardar nuestra ip en un log, debemos aceptar esto para poder continuar. Con la opción
certonly
le decimos que genere los certificados pero que no los configure. Debido a que no tenemos control sobre el servidor web compartido donde tenemos nuestro sitio, debemos especificar la opción --manual
. Let's Encrypt necesita comprobar que tenemos control sobre el dominio donde queremos instalar el certificado, para esto, el comando anterior nos pedirá que creemos un archivo dentro de nuestro servidor web para poder comprobar que está bajo nuestro control:
Make sure your web server displays the following content at http://dominio.com/.well-known/acme-challenge/9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw before continuing: 9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw.27-pmYYeQbUx9GznEFReUM5jjRWFlJkHXwr7B5AMSmQ If you don't have HTTP server configured, you can run the following command on the target server (as root): mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge cd /tmp/letsencrypt/public_html printf "%s" 9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw.27-pmYYeQbUx9GznEFReUM5jjRWFlJkHXwr7B5AMSmQ > .well-known/acme-challenge/9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw # run only once per server: $(command -v python2 || command -v python2.7 || command -v python2.6) -c \ "import BaseHTTPServer, SimpleHTTPServer; \ s = BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \ s.serve_forever()" Press ENTER to continueEste archivo podemos generarlo en nuestra PC y luego subirlo a nuestro servidor antes de darle ENTER al mensaje anterior. Para esto promero creamos el archivo:
$ echo "9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw.27-pmYYeQbUx9GznEFReUM5jjRWFlJkHXwr7B5AMSmQ > 9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw"Y ahora lo subimos a nuestro espacio de hosting por FTP:
$ ftp dominio.com Connected to dominio.com. 220 ProFTPD (ProFTPD Server) [1.2.3.4] Name (dominio:ezq): USUARIO 331 Password required for b1000370 Password: CONTRASEÑA 230 User b1000370 logged in Remote system type is UNIX. Using binary mode to transfer files. ftp>Ponemos el nombre de usuario ftp de nuestro sitio y a continuación la contraseña. Creamos el directorio en donde hay que poner el archivo:
ftp> mkdir .well-known/ 257 "/.well-known" - Directory successfully created ftp> mkdir .well-known/acme-challenge 257 "/.well-known/acme-challenge" - Directory successfully createdCambiamos de directorio al recién creado y subimos el archivo:
ftp> cd .well-known/acme-challenge 250 CWD command successful ftp> put 9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw.27-pmYYeQbUx9GznEFReUM5jjRWFlJkHXwr7B5AMSmQ local: 9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw.27-pmYYeQbUx9GznEFReUM5jjRWFlJkHXwr7B5AMSmQ remote: 9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw.27-pmYYeQbUx9GznEFReUM5jjRWFlJkHXwr7B5AMSmQ 227 Entering Passive Mode (1,2,3,4,195,102). 150 Opening BINARY mode data connection for 9fjf9LLOuEjSThn0Vi-3gPAp_dNLZU6afGn-uPfRlHw.27-pmYYeQbUx9GznEFReUM5jjRWFlJkHXwr7B5AMSmQ 226 Transfer complete 5 bytes sent in 4,6e-05 secs (108,70 Kbytes/sec)Ahora podemos darle ENTER a letsencrypt para que continúe con la comprobación y genere el certificado. Si todo sale bien deberías ver algo como esto:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/dominio.com/fullchain.pem. Your cert will expire on 2016-03-13. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. - 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-leAhora sólo resta configurar el servidor web, esto dependerá del servicio de hosting que tengamos. Los certificados los podemos encontrar en
/etc/letsencrypt/live/dominio.com/
Etiquetas: Fedora, letsencrypt, SSL, HTTPS, Hosting