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. :)
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.
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.
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
- Asegúrese de que su certificado y Clave tengan el formato PEM. Si no, entonces conviértalos usando openssl command
-
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
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;
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.
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)
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ó.
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.
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
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
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