Closed UO263595 closed 2 years ago
En el despliegue nos dice al iniciar sesión que no puede generar un token en una conexion HTTP, por tanto debemos cambiar para conectar por HTTPS.
Estamos intentando generar un certificado con letencrypt (https://letsencrypt.org/getting-started/) , para ello hemos hecho una conexión ssh con nuestra máquina de aws y hemos instalado certbot siguiendo las instrucciones de esta página: https://certbot.eff.org/instructions?ws=webproduct&os=ubuntufocal y seleccionando Web Hosting Product y Ubuntu 20.
Una vez hecho esto procedemos a instalar en nuestra máquina el snapd y posteriormente el Certbot pero al pasarle el dominio público nos da el siguiente error: Error creating new order :: Cannot issue for "ec2-54-167-75-230.compute-1.amazonaws.com": The ACME server refuses to issue a certificate for this domain name, because it is forbidden by policy.
He encontrado un post interesante a cerca de lo que puede estar pasando en la página:
pfg: (http://amazonaws.com/) happens to be on the blacklist Let’s Encrypt uses for high-risk domain names (i.e. phishing targets, etc.). There’s nothing you can do about this on your end, other than use your own domain name. [...] (I believe EC2 instances are kind of ephemeral, so I’m not sure if you can rely on the hostname being the same forever).
jsha: @pfg is correct. We specifically list the amazonaws domans because we know they are ephemeral. We might certify one as belonging to you today, and then it could belong to someone else tomorrow.
Así que parece que no podremos usar Let’s Encrypt para el certificado de ssh.
Fuente: https://community.letsencrypt.org/t/policy-forbids-issuing-for-name-on-amazon-ec2-domain/12692
Hemos intentado crear una Entidad Certificadora para crear nuestro propio certificado de AWS, pero nos dice que se cobrará por cada Clave Privada que creemos, aun así hemos probado a crearlo y nos sale el mismo error de que no estamos autorizados.
También hemos intentado hacerlo con https://www.digicert.com/kb/csr-creation-ssl-installation-aws-openssl.htm pero después del proceso de configuración te pide comprar el certificado.
La siguente prueba a realizar ha sido obtener un certificado utilizando Nginx y Docker, hemos seguido las instrucciones de la página: https://medium.com/@odeyinkadavid/deployment-of-ssl-encrypted-node-js-app-on-aws-ec2-using-nginx-and-docker-ac2fa984000d#:~:text=the%20next%20section.-,Creating,-Server%20Block
Instalando nginx, creando un archivo de subdominio en /etc/nginx/sites-available con la configuración adecuada. Después una vez que vemos el mensaje de nginx en el puerto 80 para saber que vamos bien, ejecutamos el comando sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Despues para obtener el certificado SSL hacemos sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d subdomain.com Y nos devuelve el mismo error de permisos que con AWS No se ha podido enumerar las autoridades de certificación User: ... is not authorized to perform: acm-pca:ListCertificateAuthorities because no identity-based policy allows the acm-pca:ListCertificateAuthorities action
Intentamos también con las instrucciones de la siguiente página y lo mismo. https://financetrainingcourse.com/education/2016/06/ssl-certificate-install-aws-guide-apache-ubuntu-14-04/
Parece ser que la unica solución es la compra de un dominio, una vez tengamos un dominio disponible para lanzar nuestra aplicación, será facil obtener un certificado con Lets Encrypt u otra similar. Otra opción sería que en nuestra cuenta de AWS student, tengamos los privilegios para crear un certificado propio de AWS, y tampoco tendríamos este problema.
Se necesita utilizar el protocolo HTTPS en lugar del HTTP para estrablecer una conexión segura servidor-cliente y poder acceder a los datos del POD.