{"id":2751,"date":"2020-10-14T23:22:33","date_gmt":"2020-10-14T22:22:33","guid":{"rendered":"http:\/\/www.jmarior.net\/itank\/?p=2751"},"modified":"2020-10-21T20:27:56","modified_gmt":"2020-10-21T19:27:56","slug":"como-migrar-tu-sitio-web-http-en-https","status":"publish","type":"post","link":"https:\/\/www.jmarior.net\/itank\/como-migrar-tu-sitio-web-http-en-https\/","title":{"rendered":"C\u00f3mo migrar tu sitio web http en https"},"content":{"rendered":"<p>Partimos de un servidor Ubuntu Server 19.10 con Apache 2 y Wordpres 5.5.1<\/p>\n<h1>1. Obtener un certificado SSL<\/h1>\n<p>Utilizar\u00e9 un certificado SSL gratu\u00edto emitido por la entidad certificadora <a href=\"https:\/\/letsencrypt.org\/\">LetsEncript<\/a> y generado por l\u00ednea de comandos mediante <a href=\"https:\/\/certbot.eff.org\/\">certbot.eff.org<\/a><\/p>\n<p>instalar CertBot<\/p>\n<pre>$ sudo snap install certbot --classic<\/pre>\n<p>certbot 1.9.0 from Certbot Project (certbot-eff\u2713) installed<\/p>\n<p>Generar el certificado para mi dominio hosteado en el directorio <em>\/webroot\/www.jmarior.net<\/em> indicando mi propio almac\u00e9n de certificados en <em>\/home\/user\/webcertificates<\/em><\/p>\n<p><code>$ certbot certonly --webroot -w \/webroot\/www.jmarior.net -d www.jmarior.net -d jmarior.net --config-dir \/home\/user\/webcertificates --work-dir \/home\/user\/webcertificates --logs-dir \/home\/user\/webcertificates -m usuario@dominio.net<\/code><\/p>\n<pre>Puedes usar el par\u00e1metro --dry-run para hacer pruebas<\/pre>\n<p>Si todo fue bien, se habr\u00e1 generado una estructura de directorios en tu almac\u00e9n de certificados.<\/p>\n<p><code>home\/user\/webcertificates\/live\/www.jmarior.net<\/code><\/p>\n<p>Y encontrar\u00e1s los siguientes archivos:<\/p>\n<p><code>cert.pem: El nuevo certificado<br \/>\nchain.pem: Certificado de la autoridad certificadora.<br \/>\nfullchain.pem: cert.pem + chain.pem<br \/>\nprivkey.pem: La clave privada utilizada para firmar el certificado.<\/code><\/p>\n<p>listos para usar desde el servidor web.<\/p>\n<p>Para comprobar los certificados existentes en nuestro almac\u00e9n de certificados:<\/p>\n<p><code>$ certbot certificates --config-dir \/home\/user\/webcertificates --work-dir \/home\/user\/webcertificates --logs-dir \/home\/user\/webcertificates<\/code><\/p>\n<p>Saving debug log to <code>\/home\/user\/webcertificates<\/code>\/letsencrypt.log<\/p>\n<pre>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nFound the following certs:\r\nCertificate Name: www.jmarior.net\r\nSerial Number: 4493e50XXXXXXXX2a6ad0059af6\r\nDomains: www.jmarior.net\r\nExpiry Date: 2021-01-12 13:42:51+00:00 (VALID: 89 days)\r\nCertificate Path: \/home\/user\/webcertificates\/live\/www.jmarior.net\/fullchain.pem\r\nPrivate Key Path: \/home\/user\/webcertificates\/live\/www.jmarior.net\/privkey.pem\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<\/pre>\n<h1>2. Configurar tu host Apache para aceptar peticiones por el puerto SSL<\/h1>\n<p>Por un lado habilitamos el m\u00f3dulo SSL en el servidor web Apache y lo reiniciamos:<\/p>\n<div class=\"holsh-div nolinks\">\n<div class=\"bash\">\n<pre># a2enmod ssl\r\n# systemctl restart apache2<\/pre>\n<div class=\"holsh-div nolinks\">\n<div class=\"bash\">\n<p>Abrimos el firewall del sistema:<\/p>\n<pre># ufw allow 443\/tcp<\/pre>\n<p>Ahora configuramos nuestro VirtualHost para servidor por https<\/p>\n<pre># nano \/etc\/apache2\/sites-avaliable\/midominio.conf<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><code>&lt;VirtualHost *:443&gt;<br \/>\nServerName www.jmarior.net<br \/>\nSSLEngine on<br \/>\nSSLCertificateFile \/home\/user\/webcertificates\/live\/www.jmarior.net\/cert.pem<br \/>\nSSLCertificateKeyFile \/home\/user\/webcertificates\/live\/www.jmarior.net\/privkey.pem<br \/>\nSSLCertificateChainFile \/home\/user\/webcertificates\/live\/www.jmarior.net\/chain.pem<br \/>\n(...)<br \/>\n&lt;\/VirtualHost&gt;<\/code><\/p>\n<div class=\"holsh-div nolinks\">\n<div class=\"bash\">\n<div class=\"holsh-div nolinks\">\n<div class=\"bash\">\n<p>Cargamos la nueva configuraci\u00f3n:<\/p>\n<pre># systemctl reload apache2<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>entonces ya deber\u00edamos poder acceder a la nueva URL<\/p>\n<pre><a href=\"https:\/\/www.jmarior.net\">https:\/\/www.jmarior.net<\/a>\r\n\r\n<\/pre>\n<p>El resultado final es que se activar\u00e1 el candado indicador de https en el navegador:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2766 aligncenter\" src=\"https:\/\/www.jmarior.net\/itank\/files\/www_jmarior_net_over_ssl.jpg\" alt=\"\" width=\"437\" height=\"242\" srcset=\"https:\/\/www.jmarior.net\/itank\/files\/www_jmarior_net_over_ssl.jpg 437w, https:\/\/www.jmarior.net\/itank\/files\/www_jmarior_net_over_ssl-400x222.jpg 400w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/p>\n<h1>3. Redireccionar peticiones http al puerto https<\/h1>\n<p>La forma de que todas las peticiones a la vieja url http sean redireccionadas por Apache a la nueva https es la siguiente<\/p>\n<p><code>&lt;VirtualHost *:80&gt;<br \/>\nServerName www.jmarior.net<br \/>\nServerAlias jmarior.net<br \/>\nRedirect permanent \/ https:\/\/www.jmarior.net\/<br \/>\n&lt;\/VirtualHost&gt;<\/code><\/p>\n<p>Para cargar esta nueva configuraci\u00f3n:<\/p>\n<pre># systemctl reload apache2<\/pre>\n<h1>4. Migrar el sitio wordpress de http a https<\/h1>\n<p>Puesto que deseamos migrar completamente a https lo mejor es reemplazar todas las referencias a <a href=\"http:\/\/www.jmarior.net\">http:\/\/www.jmarior.net<\/a> por https:\/\/www.jmarior.net y para hacerlo me ayud\u00e9 del plugin <strong>Better Search Replace.<\/strong><\/p>\n<p>Como mi instalaci\u00f3n de WordPress est\u00e1 en modo Multiusuario tuve que modificar la URL del sitio principal cambiando temporalmente los par\u00e1metros SITE_ID_CURRENT_SITE y BLOG_ID_CURRENT_SITE en wp-config.php para volver editable el campo <em>Direcci\u00f3n del sitio (URL)<\/em><\/p>\n<h1>5. Renovar el certificado digital<\/h1>\n<p>Inicialmente los certificados tiene una vigencia de 90 d\u00edas y ser\u00e1 necesario renovarlos. El siguiente comando revisa el almac\u00e9n de certificados y renueva los que est\u00e1n a punto de caducar en 30 d\u00edas:<\/p>\n<p><code>$ certbot renew --config-dir \/home\/user\/webcertificates --work-dir \/home\/user\/webcertificates --logs-dir \/home\/user\/webcertificates<\/code><\/p>\n<p>Para pruebas a\u00f1adir <code>--dry-run<\/code><\/p>\n<p>y para renovar mediante cron debemos ejecutarlo por lo menos una vez a la semana (por ejemplo cada domingo a las 5 y 5 de la madrugada) en modo silencioso para que no genere output:<\/p>\n<p><code>5 5 * * 0 certbot renew --config-dir \/home\/user\/webcertificates --work-dir \/home\/user\/webcertificates --logs-dir \/home\/user\/webcertificates -q<\/code><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Partimos de un servidor Ubuntu Server 19.10 con Apache 2 y Wordpres 5.5.1 1. Obtener un certificado SSL Utilizar\u00e9 un certificado SSL gratu\u00edto emitido por la entidad certificadora LetsEncript y generado por l\u00ednea de comandos mediante certbot.eff.org instalar CertBot $ sudo snap install certbot &#8211;classic certbot 1.9.0 from Certbot Project (certbot-eff\u2713) installed Generar el certificado [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2756,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-2751","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-itank-ideas"],"views":305,"_links":{"self":[{"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/posts\/2751","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/comments?post=2751"}],"version-history":[{"count":0,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/posts\/2751\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/media\/2756"}],"wp:attachment":[{"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/media?parent=2751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/categories?post=2751"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jmarior.net\/itank\/wp-json\/wp\/v2\/tags?post=2751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}