"El certificado de clave pública y la clave privada no coinciden" cuando se usa el certificado emitido por Godaddy [cerrado]

86

Estoy intentando instalar un certificado SSL de GoDaddy en un nuevo equilibrador de carga que estoy configurando en Amazon AWS. Originalmente creé el certificado en Godaddy usando el programa keytool para la instalación directa en un servidor Glassfish 3.1 (Amazon linux ami). No tuve problemas para instalar esa configuración directamente en el servidor. Ahora necesito mover el certificado del servidor web al nuevo balanceador de carga. Amazon requiere que la clave privada y los certificados estén en formato PEM, por lo que utilicé la herramienta "rekey" en GoDaddy para crear nuevos certificados. Cuando los cargo en la pantalla de configuración del equilibrador de carga en la consola de AWS Mgmt, aparece el mensaje de error: "El certificado de clave pública y la clave privada no coinciden".

Así es como estoy creando las claves:

$ openssl genrsa -des3 -out private.key 2048
$ openssl req -new -key private.key -out apps.mydomain.com.csr

Luego envío el archivo .csr a GoDaddy durante el proceso de "reingreso". Una vez que se completa el cambio de clave, descargo los 2 certificados recién creados (apps.mydomain.com.crt & gd_bundle.crt). Los descargo seleccionando (Apache) como tipo de servidor (también he probado "otro" y "Cpanel" pero todos parecen ser iguales).

En este punto, elimino el cifrado del archivo private.key usando el siguiente comando:

$ openssl rsa -in private.key -out private.pem

En este punto, vuelvo a la consola de AWS Mgmt, creo el balanceador de carga, agrego la redirección del servidor seguro y coloco el contenido de los siguientes archivos en los campos respectivos en la pantalla donde solicita configurar el certificado ssl:

private.pem --> Private Key
apps.mydomain.com.crt --> Public Key Certificate
gd_bundle.crt --> Certificate Chain

Cuando hago clic en el "botón continuar", aparece el error "Error: el certificado de clave pública y la clave privada no coinciden".

-¿Hay alguna manera de probar que recibo un mensaje de error válido de Amazon? Me parece extraño que las teclas no coincidan cuando sigo las instrucciones de GoDaddy muy de cerca.

Intenté crear el archivo private.key sin cifrado RSA antes de crear el .csr y eso no parece hacer ninguna diferencia.

También asumo que los archivos .crt que estoy descargando de GoDaddy están en formato .PEM, pero no estoy seguro de cómo verificar esto.

¿Algunas ideas?

Felby
fuente
1
Stack Overflow es un sitio para preguntas de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte ¿Qué temas puedo preguntar aquí en el Centro de ayuda? Quizás Superusuario sería un mejor lugar para preguntar. Consulte también ¿Dónde publico preguntas sobre Dev Ops? .
jww
Esta publicación tiene más de 3 años, ¿por qué molestarse en moverla ahora?
Felby
1
Felby: la gente suele decir: "... pero mira esta publicación y esa publicación". Por lo tanto, no es suficiente mantener ordenadas las nuevas publicaciones, también tenemos que recibir un mensaje en las publicaciones antiguas. Y por lo que vale, no creo que sea una mala pregunta. Es un poco fuera de tema para Stack Overflow.
jww
@Felby debería considerar esta respuesta para su aceptación. Es el que la mayoría de los desarrolladores buscan cuando surge este problema con AWS.
Noel Baron

Respuestas:

61

Para mí, fueron dos pasos sencillos:

  1. Convierta la clave privada a PEM:

    openssl rsa -in yourdomain.key -outform PEM

  2. Convierta el certificado y el paquete de certificados a PEM :

    openssl x509 -inform PEM -in yourdomain.crt

    openssl x509 -inform PEM -in bundle.crt

Jonathon Hill
fuente
1
Esta respuesta en particular realmente me ayudó. Gracias Jonathan. Para el registro, yourdomain.crt es la clave pública, el certificado que obtuvo de su proveedor (también podría ser un .cer)
user_v
Sigo recibiendo un errorWARNING: can't open config file: /etc/pki/tls/openssl.cnf
tq
2
@tq: algunos comandos de OpenSSL también tienen una -configopción. Úselo para especificar la ruta al archivo de configuración que está utilizando.
jww
@felby Debería marcar esta como la respuesta aceptada. Esta es la única respuesta que no crea un problema de confianza SSL con los dispositivos iOS.
Noel Baron
Esta respuesta es realmente útil con SSL comodín. Tienes que convertir los archivos domain.crt y gd_bundle.crt.
Ducle
40

Solo para que conste y para cualquier otra persona que esté tratando de resolverlo:

yourdomain.key -> comando de terminal: sudo openssl rsa -in yourdomain.key -outform PEM -out yourdomain.pem -> clave privada

tudominio.crt -> clave pública

gd_bundle.crt -> cadena de certificados

y listo :)

Chris J
fuente
2
Dios mío, perdí tantas horas con el problema, ¡me acabas de salvar! Compré un certificado RapidSSL: el truco consistía en 1) convertir la clave privada como sugiere aquí y 2) invertir el orden de los certificados en la cadena de certificados proporcionada por RapidSSL. ¡Gracias!
MiniQuark
sigue pidiéndome una contraseña, pero mi certificado de rapidssl se hizo sin una
tq
El comando sudo le pedirá una contraseña de administrador, a menos que su cuenta esté configurada para no requerir una contraseña a través de algunos métodos diferentes. ¿Esa es la contraseña a la que también te refieres?
Chris J
Para agregar algo donde pueda ser encontrado por alguien que lo necesite, obtuvimos un certificado de Host Gator de un cliente, y parecía bastante bien configurado: sin conversiones de pem, y el paquete de CA ya estaba concatenado. Sin embargo, no entraría en Amazon. Ocurrió lo mismo con el orden de los certificados en el paquete. Al invertir el orden, entró y funcionó.
CargoMeister
23

Parece que el problema fue la forma en que estaba copiando el contenido de la clave y los certificados en la consola de administración de AWS. Estaba usando un escritorio de Ubuntu ejecutándose en Virtual Box en un escritorio de Windows 7; copie y pegue los valores de una pantalla de gedit en el navegador que se ejecuta en el cuadro de Windows. Una vez que abrí los archivos de claves y certificados en la misma caja que el navegador web (Windows en este caso), los certificados se aprobaron sin problemas. Supongo que algunas partes del archivo no se reproducen correctamente cuando se usa el portapapeles compartido entre el cliente y el host de Virtual Box. Caso cerrado.

Felby
fuente
¿Puede aceptar su respuesta para que la gente sepa que esto se ha resuelto?
Phil Sturgeon
2
Extraño, pensé que ya lo había aceptado hace mucho tiempo ...
Felby
7

Encontramos una solución alternativa a este problema. Teníamos los mismos síntomas con el mismo error.

Luego intentamos volver a ingresar los códigos pem una vez más, pero esta vez nos aseguramos de presionar enter una vez y asegurarnos de que el cursor estuviera en una línea en blanco al final de cada ventana. Luego lo salvamos. FUNCIONÓ.

Esto resolvió nuestro problema, por lo que podría resolverlo para otros.

PlateSpinner
fuente
1

Una pequeña trampa. Estoy usando una caja de Windows (Win 7 Pro) y cuando usé el puerto de Windows de OpenSSL, los archivos generados tenían caracteres de fin de línea (LF) estilo Unix.

Tuve que convertir el archivo al estilo de Windows (CRLF) para cargar la clave privada.

Christopher Stevenson
fuente
0

Puedo sugerirles una solución alternativa y una información para ustedes. Generalmente, todos los certificados tienen formato de archivo PEM. Puede abrir un bloc de notas o cualquier editor de texto y arrastrar los archivos que recibió en formato de archivo .crt. Que normalmente se llama como archivo .PEM. Si el certificado se cargó en su keytool, puede exportar el certificado como un archivo pfx desde keytool. Luego, puede separar el archivo pfx de la clave privada del archivo pfx. Debido a que el archivo pfx es la combinación de su certificado y la clave privada, puede obtener por separado el archivo de clave privada y usarlo en su amazon aws.

Sospecho que puede haber otra forma de instalar el certificado. Puede ser que pueda comunicarse con la autoridad de certificación y hay alguna forma de obtener su certificado para que se vuelva a emitir.

Rajan
fuente