SSL sigue esperando respuesta

SSL sigue esperando respuesta

Estoy intentando configurar un HTTPS pero no funciona y no sé realmente qué pasa.

Estos son los pasos que he seguido:

  1. He generado un .pemcertificado (certificado + cadena) convamos a cifrar, usando el siguiente comando:

    sudo -H ./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory

La respuesta viene de esta manera:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/xxxx.com/fullchain.pem. Your cert
   will expire on 2016-03-07. 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-le
  1. He generado una clave privada

    sudo openssl req -new -x509 -days 365 -nodes -out /etc/letsencrypt/live/xxxx.com/fullchain.pem -keyout /etc/letsencrypt/live/xxxx.com/fullchain.key

Aquí abajo pego la respuesta:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:xxxx
Locality Name (eg, city) []:xxxx
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxxx
Organizational Unit Name (eg, section) []:xxxx.com
Common Name (e.g. server FQDN or YOUR name) []:test
Email Address []:[email protected]
  1. He comprobado que la clave devuelve el valor correcto que configuré en el último paso:

    sudo openssl x509 -in /etc/letsencrypt/live/xxxx.com/fullchain.pem -noout -subject

Aquí abajo pego la respuesta:

subject= /C=US/ST=xxxx/L=xxxx/O=xxxx/OU=xxxx.com/CN=test/
[email protected]
  1. Configuré un nuevo host virtual que copio aquí a continuación:

    <VirtualHost *:443>
      ServerAdmin [email protected]
      DocumentRoot /var/www/html/xxx1/public
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
      ServerName xxxx.com
      SSLEngine on
    
      SSLCertificateFile      /etc/letsencrypt/live/xxxx.com/fullchain.pem
      SSLCertificateKeyFile      /etc/letsencrypt/live/xxxx.com/fullchain.key
    
      <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
      </FilesMatch>
    
      <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
      </Directory>
    
      BrowserMatch "MSIE [2-6]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
    
  2. Abrí el puerto 443 en mi /etc/apache2/ports.conf.

Después de todos estos pasos, lo acabo de hacer, sudo service apache2 restartpero la consola está esperando hasta que obtenga:

Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.

y cuando lo depuro con journalctl -xeel resultado es lo que viene:

-- Unit apache2.service has begun starting up.
Dec 08 19:12:20 devXxxx apache2[21637]: * Starting web server apache2
Dec 08 19:12:20 devXxxx apache2[21637]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 100.114.32.17. Set the 'ServerName' directive globally to suppress this mes
Dec 08 19:12:20 devXxxx apache2[21637]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:443
Dec 08 19:12:29 devXxxx sudo[21613]: pam_unix(sudo:session): session closed for user root
Dec 08 19:12:29 devXxxx polkitd(authority=local)[996]: Unregistered Authentication Agent for unix-process:21628:9475994 (system bus name :1.109, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, loca
Dec 08 19:12:40 devXxxx apache2[21637]: *
Dec 08 19:12:40 devXxxx apache2[21637]: * The apache2 instance did not start within 20 seconds. Please read the log files to discover problems
Dec 08 19:12:40 devXxxx systemd[1]: apache2.service: Control process exited, code=exited status=1
Dec 08 19:12:40 devXxxx systemd[1]: Failed to start LSB: Apache2 web server.
-- Subject: Unit apache2.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit apache2.service has failed.

Después de ver estos 20 segundos que apache intenta cargar, he decidido probar el certificado como os detallo:

  1. Comprobando que solo hay 1 certificado:

    sudo ln -s /etc/letsencrypt/live/xxxx.com/fullchain.pemsudo openssl x509 -hash -noout -in /etc/letsencrypt/live/xxxx.com/fullchain.pem.0

  2. Verificando que el certificado funciona:

    openssl verify -CApath f6361f65.0

pero sorpresa, no es así.... el terminal sigue intentando conectarse sin respuesta.

¿Alguien me puede ayudar?

Gracias por el consejo.

Respuesta1

En primer lugar, parece que algo ya está destinado al puerto 443:

08 de diciembre 19:12:20 devXxxx apache2[21637]: (98)La dirección ya está en uso: AH00072: make_sock: no se pudo vincular a la dirección [::]:443 D

A continuación, con Lets Encrypt, no necesita configurar su propia clave privada, el script debería generar una para usted (a menos que genere manualmente su propia CSR).

Cuando letsencrypt-autose complete el script, debería tener 4 archivos en el directorio de su certificado.

  • cert.pem- Este es tu certificado. En Apache SSLCertificateFiledebería apuntar a este archivo.
  • privkey.pem- Esta es tu clave privada. MANTENLO EN SECRETO. En Apache SSLCertificateKeyFiledebería apuntar a este archivo.
  • chain.pem- Esta es la cadena de certificados que establecen tu confianza. En Apache puedes apuntar SSLCertificateChainFilea este archivo.
  • fullchain.pem- Esta es una combinación de cert.pemy chain.pem, por lo que es su certificado y su cadena de confianza completa. En Apache, apunte SSLCACertificateFilea este archivo.

Cifremos la documentación

Respuesta2

Para letsencypt este comando me funciona sin detener el servidor

./letsencrypt-auto certonly --webroot -w /websitedir -d www.domain.com

después de este proceso para nginx puedes vincular los certificados.

ln -s privkey.pem /etc/ssl/domain.key
ln -s fullchain.pem /etc/ssl/domain.crt

información relacionada