SSL: error: 0B080074: x509 rutinas de certificados: X509 comprobar clave privada: los valores de clave no coinciden


No puedo configurar SSL. He buscado en Google y he encontrado algunas soluciones, pero ninguna de ellas funcionó para mí. Necesito ayuda, por favor...

Aquí está el error que recibo cuando intento reiniciar nginx:

root@s17925268:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed

Mi certificado es de StartSSL y es válido por 1 año.

Esto es lo que probé:

  • El certificado y la clave privada no tienen espacios finales.
  • No estoy usando el servidor predeterminado.archivo clave.
  • Revisé el nginx.conf y el directriz están apuntando a la clave privada y el certificado correctos.

También comprobé el módulo, y obtengo un módulo diferente tanto para la clave como para el certificado.

Gracias por su ayuda. :)

Author: Galou, 2014-10-04

10 answers

Obtuve un hash MD5 con diferentes resultados tanto para la clave como para el certificado.

Esto lo dice todo. Tiene un desajuste entre la clave y el certificado.

El módulo debe coincidir. Asegúrate de tener la clave correcta.

 27
Author: dev0z,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-07 00:17:00

Una vez que haya establecido que no coinciden, todavía tiene un problema what qué hacer al respecto. A menudo, el certificado puede simplemente ser ensamblado incorrectamente. Cuando una CA firma su certificado, le envía un bloque que se parece a

-----BEGIN CERTIFICATE-----
MIIAA-and-a-buncha-nonsense-that-is-your-certificate
-and-a-buncha-nonsense-that-is-your-certificate-and-
a-buncha-nonsense-that-is-your-certificate-and-a-bun
cha-nonsense-that-is-your-certificate-and-a-buncha-n
onsense-that-is-your-certificate-AA+
-----END CERTIFICATE-----

También te enviarán un paquete (a menudo dos certificados) que representan su autoridad para otorgarte un certificado. esto se verá algo como

-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-your-request
-this-is-the-certificate-that-signed-your-request-this
-is-the-certificate-that-signed-your-request-this-is-t
he-certificate-that-signed-your-request-this-is-the-ce
rtificate-that-signed-your-request-A
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-for-that-one
-this-is-the-certificate-that-signed-for-that-one-this
-is-the-certificate-that-signed-for-that-one-this-is-t
he-certificate-that-signed-for-that-one-this-is-the-ce
rtificate-that-signed-for-that-one-this-is-the-certifi
cate-that-signed-for-that-one-AA
-----END CERTIFICATE-----

Excepto que desafortunadamente, no estarán tan claramente etiquetados.

Una práctica común, entonces, es agrupar todos estos en un archivo your su certificado, luego los certificados de firma. Pero como no se distinguen fácilmente, a veces sucede que alguien accidentalmente los pone en el otro orden signing firmando certificados, luego el certificado final without sin darse cuenta. En ese caso, su certificado no coincidirá con su clave.

Puede probar para ver lo que el cert piensa que representa ejecutando

openssl x509 -noout -text -in yourcert.cert

Cerca de la parte superior, deberías ver "Sujeto:" y luego cosas que se parecen a tus datos. Si, en cambio, se parece a su CA, su paquete probablemente esté en el orden incorrecto; puede intentar hacer una copia de seguridad y luego mover el último certificado al principio, esperando que sea el que sea su certificado.

Si esto no funciona, es posible que solo tenga que volver a emitir el certificado. Cuando hago una CSR, me gusta etiquetar claramente para qué servidor es (en lugar de solo ssl.clave o servidor.clave) y hacer una copia de ella con la fecha en el nombre, como mydomain.20150306.clave sucesivamente. de esa manera, es poco probable que los pares de claves privadas y públicas se mezclen con otro conjunto.

 131
Author: Vynce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-06 07:43:10
  1. Asegúrese de que su certificado y Clave tengan el formato PEM. Si no, entonces conviértalos usando openssl command
  2. Compruebe un hash MD5 de la clave pública para asegurarse de que coincide con lo que hay en una clave privada

    Openssl x509-noout-modulus-in certificado.crt / openssl md5

    Openssl rsa-noout-modulus-in PrivateKey.key / openssl md5

 51
Author: dev0z,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-04 19:06:11

Si esto sucede y está utilizando Let's Encrypt / certbot, la razón es más probable que haya utilizado chain.pem en lugar de fullchain.pem.

Debería ser algo como esto:

ssl_certificate /etc/certbot/live/example.com/fullchain.pem;
ssl_certificate_key /etc/certbot/live/example.com/privkey.pem;

Ver certbot docs "¿Dónde están mis certificados?"

 7
Author: Marian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-15 00:35:56

Tuve el mismo problema y finalmente lo resolví cambiando el orden de los bloques pem en el archivo de certificado.

El bloque cert debe colocarse al principio del archivo, luego los bloques intermedios y luego el bloque raíz.

Me di cuenta de este problema comparando un archivo de certificado problemático con un archivo de certificado de trabajo.

 3
Author: fuweichin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-23 11:57:43

Tuve este problema porque estaba agregando paquete y certificado en orden incorrecto, así que tal vez esto podría ayudar a alguien más.

Antes (que está mal) :

cat ca_bundle.crt certificate.crt > bundle.crt

Después (que es correcto)

cat certificate.crt ca_bundle.crt > bundle.crt

De la página de manual de nginx :

Si el certificado del servidor y el paquete se han concatenado en el orden incorrecto, nginx no se iniciará y mostrará el mensaje de error:

SSL_CTX_use_PrivateKey_file(" ... /www.example.com.key") failed
   (SSL: error:0B080074:x509 certificate routines:
    X509_check_private_key:key values mismatch)
 2
Author: Mandeep Gill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-06 04:29:50

En mi caso he querido cambiar el certificado ssl, porque he cambiado mi servidor por lo que tuve que crear una nueva csr con este comando:

Open openssl req-new-newkey rsa:2048-nodes-keyout mysite.key-out mysite.csr

He enviado a mysite.archivo csr al proveedor ssl de la empresa y después de recibir el certificado crt y luego he reiniciado nginx , y tengo este error

(SSL: error: 0B080074: x509 rutinas de certificados: X509_check_private_key: valores de clave desajuste)

Después de mucha investigación, el error fue que el módulo del archivo de clave no era el mismo que el del archivo crt

Por lo tanto, para que funcione he creado un nuevo archivo csr pero he cambiado el nombre del archivo con este comando

Open openssl req-new-newkey rsa:2048-nodes-keyout mysite_new.llave de salida mysite_new.csr

Luego recibí un nuevo archivo crt del proveedor de la compañía, reinicié nginx y funcionó.

 1
Author: lemon fish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-08 11:32:35

Mis 5 centavos sobre el tema:

Yo tenía el mismo problema. Después de aproximadamente 1 hora de cuidarlo, encontré que pegué el certificado incorrectamente.

Si tiene un error como este, verifique su certificado.

 1
Author: Nick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-19 10:26:32

Esto también puede suceder cuando su CA emite un certificado intermedio

Me encontré con este problema (dos veces) con nginx y ninguna de las soluciones en este post explicó el problema. La entrada de blog aquí de un buen caballero llamado Marco lo clavó, y lo estoy pegando aquí para cualquiera que también se encuentre con lo que estaba viendo. https://medium.com/@mrkdsgn/steps-to-install-a-go-daddy-ssl-certificate-on-nginx-on-ubuntu-14-04-ff942b9fd7ff

En mi caso, go-daddy era el CA y esto es específico de cómo emiten los paquetes cert y cert intermedio.

Aquí está el extracto de la entrada del blog de Marco

Con Nginx, si su CA incluyó un certificado intermedio, debe crear un único archivo de certificado encadenado que contenga su certificado y los certificados intermedios de la CA.

Usted puede usar este comando para crear un combinado archivo llamado ejemplo.com.encadenados.crt:

cat example.com.crt intermediate.crt > example.com.chained.crt

 0
Author: Shyam Habarakada,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-15 23:52:50

Para Nginx;

1-openssl req-newkey rsa: 2048-nodes-keyout domain.com.key-out domain.com.csr

2 - Archivo SSL domain_com.crt y domain_com.ca-archivos de paquete copiar nuevo archivo en pegar dominio.com.chained. crt

3-Añadir archivos nginx: a. ssl_certificate / home / user / domain_ssl / domain. com. chained. crt; b. ssl_certificate_key/home/user/domain_ssl / domain.com.key;

Lates restart Nginx

 0
Author: electrocoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-09 22:19:34