Error de Apache SSL: clave privada no encontrada

8

Estoy ejecutando apache en Ubuntu 14.04 e intento implementar SSL. Cualquier ayuda sería muy apreciada.

default-ssl.conf tiene:

SSLCertificateFile      /etc/apache2/ssl/domain.crt 
SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Cuando reinicio apache, el mensaje de error en /var/log/apache2/error.log es:

[Sun Feb 01 19:31:06.443226 2015] [ssl:error] [pid 30927] AH02203: Init: Private key not found
[Sun Feb 01 19:31:06.443408 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443424 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 er$
[Sun Feb 01 19:31:06.443435 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443447 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443458 2015] [ssl:error] [pid 30927] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib
[Sun Feb 01 19:31:06.443468 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443479 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443487 2015] [ssl:emerg] [pid 30927] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more inf$
mikesynan
fuente
¿Cómo resolviste este problema?
Srinivas

Respuestas:

6

ADVERTENCIA: nunca publique su clave privada en Internet. Ni siquiera lo copie a otra computadora, estación de trabajo, etc. Debe mantenerse lo más privado posible.

SSLCertificateKeyFile requiere una clave privada. Esta clave generalmente se genera antes de CSR o al mismo tiempo. Busque un archivo que comience con una línea que contenga:BEGIN PRIVATE KEY

La CSR (solicitud de firma de certificado) se requiere solo cuando solicita firmar el certificado. Después de eso puedes descartarlo.

Si perdió la clave privada, deberá generar una nueva clave privada, luego generar una nueva CSR y pedirle a la CA (autoridad de certificación) que firme la CSR nuevamente.

Mircea Vutcovici
fuente
1

Aquí está el problema:

SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Pones aquí tu archivo de solicitud de firma de certificado (CSR) por error. En su lugar, debe colocar el archivo de clave privada que utilizó para generar la CSR. Ese archivo de clave privada no debe estar protegido con contraseña, de lo contrario, deberá escribir una contraseña cada vez que (reinicie) Apache.

Para beneficio de las generaciones futuras, aquí hay un breve resumen de cómo generar CSR-s con OpenSSL (un buen tutorial está disponible en la documentación de Ubuntu ):

1) Genere la clave del servidor:

openssl genrsa -des3 -out server.key 2048

Esto requiere que especifique una contraseña.

2) Al hacer una clave privada sin contraseña, ingrese la contraseña que utilizó anteriormente cuando se le solicite:

openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.SECURE
mv server.key.insecure server.key

3) Genere la CSR con su clave privada sin contraseña:

openssl req -new -key server.key -out mydomain.org.csr

donde "mydomain.org" podría ser su dominio. Tienes que responder algunas preguntas de forma interactiva. Una vez que haya terminado, envía el mydomain.org.csrarchivo a su autoridad de certificación. Recuperará un *.crtarchivo o un *.pemarchivo. Asumamos que te dieron mydomain.org.crt. Instálelo como su certificado y el archivo de clave sin contraseña como su clave (las ubicaciones son válidas para Ubuntu 14.04, pueden estar en otro lugar en otros sistemas, consulte los documentos de Apache2):

sudo cp mydomain.org.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private/mydomain.org.key

Y finalmente edite la configuración de Apache2 (podría ser default-ssl.conf):

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/mydomain.org.crt
    SSLCertificateKeyFile   /etc/ssl/private/mydomain.org.key

Espero que esto ayude.

Laryx Decidua
fuente
1

Sé que alguien ya ha respondido esta pregunta, pero quería que otros supieran lo que me sucedió cuando recibí este error.

En mi causa, por error tuve SSLCertificateFile en lugar de SSLCertificateChainFile para mi paquete de certificados. Este error seguía apareciendo y me estaba dando vueltas. Seguía pensando que mi clave privada estaba equivocada.

usuario1283449
fuente
0

Sé que esta publicación es antigua, pero pensé que debería agregarle más, ya que este es el primer enlace en una búsqueda de Google sobre el error: "Inicial: clave privada no encontrada"

He visto esto suceder antes y resultó ser una mala clave privada. Usé strace para rastrear la última clave privada que apache intentó cargar. Una vez que lo eliminé del directorio ssl y httpd.conf, Apache se reinició sin problemas.

Clave SSL incorrecta: -rw-r ----- 1 raíz 754974732 1.7K 31 de mayo de 1987 /var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

Comando utilizado para rastrear la clave incorrecta: strace -f -v -s 1024 -o strace.log service httpd start

Entorno: SO: CentSO 6.9 Panel de control: cPanel 11.64 Apache versión 2.2

tl;dr: Find the bad private key that Apache is trying to load and backup it up and remove it from Apache's configuration file.

¡Espero que esto ayude!

m33k
fuente
Bienvenido a la falla del servidor. Su publicación podría usar un formato mejorado. ¿Es la clave SSL incorrecta: ... párrafo quizás una cita? Además, su TL; DR no necesita formatearse como code. Gracias por contribuir
Digo reinstalar a Mónica el
0

Estuve haciendo girar mis ruedas en este por un momento, pero asegúrese de tener un archivo de clave privada completo. Resultó que me faltaban un par de líneas.

El comando para verificar su clave privada es:

openssl rsa -in /etc/httpd/certs/server.key -check

reemplace /etc/httpd/certs/server.key con la ruta completa a la clave privada de su servidor y, si todo está bien, verá:

RSA key ok

Espero que ayude a alguien y por cierto, mi servidor era CentOS 7.6 con Apache / 2.4.6

jbrahy
fuente