Pregunta Error de SSL: no se puede leer el certificado del servidor desde el archivo


He estado configurando SSL para mi dominio hoy y me he topado con otro problema: esperaba que alguien pudiera arrojar algo de luz sobre ...

Sigo recibiendo los siguientes mensajes de error:

[error] Inic: no se puede leer el certificado del servidor desde el archivo /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt
[error] SSL Library Error: 218529960 error: 0D0680A8: rutinas de codificación asn1: ASN1_CHECK_TLEN: etiqueta incorrecta
[error] SSL Library Error: 218595386 error: 0D07803A: rutinas de codificación asn1: ASN1_ITEM_EX_D2I: error asn1 anidado

Estoy ejecutando Apache 2.2.16 y Ubuntu 10.10. Mi archivo .crt tiene las etiquetas Begin y End, y se ha copiado exactamente del correo electrónico de confirmación que recibí, ¡muy frustrante!

¡Aclamaciones!

Editar >> Al intentar verificar el .crt no parece funcionar:

>> openssl x509 -noout -text -in domain.com.crt
incapaz de cargar el certificado
16851: error: 0906D06C: Rutinas de PEM: PEM_read_bio: sin línea de inicio: pem_lib.c: 650: Esperando: CERTIFICADO DE CONFIANZA

También >>

>> openssl x509 -text -inform PEM -in domain.com.crt
incapaz de cargar el certificado
21321: error: 0906D06C: Rutinas de PEM: PEM_read_bio: no hay línea de inicio: pem_lib.c: 650: Esperando: CERTIFICADO DE CONFIANZA
>> openssl x509 -text -inform DER -in domain.com.crt
incapaz de cargar el certificado
21325: error: 0D0680A8: rutinas de codificación asn1: ASN1_CHECK_TLEN: etiqueta incorrecta: tasn_dec.c: 1316:
21325: error: 0D07803A: rutinas de codificación asn1: ASN1_ITEM_EX_D2I: error asn1 anidado: tasn_dec.c: 380: Tipo = X509

Editar >> (Saludos por la ayuda por cierto)

>> grep '^ -----' domain.com.crt
----- COMENZAR CERTIFICADO -----
----- CERTIFICADO FINAL -----

Simplemente envié un correo electrónico a la compañía que proporcionó el Certificado, respondieron>

He comprobado el archivo CSR que ha proporcionado y puedo asegurarle   que esto se generó correctamente. El error que tienes actualmente.   se produce un encuentro porque está utilizando una línea de comando incorrecta para   instalando el CSR. Necesitará modificar este domain.com.crt desde   Su línea de comando con el nombre correspondiente de su dominio.

  • actualmente el crt está configurado para mysite.com.crt - He usado domain.com.crt como ejemplo

33
2017-09-29 16:56


origen


¿Podría por favor mostrarnos la salida de grep '^-----' domain.com.crt? - quanta
Williamsowen, todo el punto de un certificado debe mostrarse a cualquiera que se conecte a su servidor web; No es una cosa privada. Dicho esto, ¿consideraría adjuntar o publicar el certificado completo aquí para que podamos verlo directamente en lugar de tener que adivinarlo? - MadHatter
Espera, veo que acabas de aceptar mi respuesta. ¿Eso significa que fueron los saltos de línea de Windows del terminal los que causaron el problema? - MadHatter
MadHatter - disculpas! Nuevo en esto, pero lo tengo funcionando, el formato del correo electrónico que recibí no estaba disponible, ¡no podría agradecerles lo suficiente! - williamsowen


Respuestas:


¿Es posible que las líneas terminen en ^ M? Este es un problema potencial al mover archivos de Windows a sistemas UNIX. Una forma fácil de comprobar es usar vi en el modo "mostrarme el binario", con vi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt.

Si cada línea termina con un control-M, así

-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg^M
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x^M

tienes un archivo en formato de terminación de línea de Windows, y apache no los ama.

Sus opciones incluyen mover el archivo otra vez, cuidando más; o usando el dos2unix orden de eliminarlos; También puedes eliminarlos dentro de vi, si tienes cuidado.


45
2017-09-29 21:38



Para mí fue un error copiar y pegar, omitiendo el primer par de caracteres del encabezado -----BE... Gracias por la inspiración para doble verificación! - cfi
Gracias, este fue mi problema! En notepad ++ en Windows puede usar el diálogo de conversión EDIT-EOL para cambiar el formato correcto de LF. Y puede usar el menú Ver-Mostrar símbolo para ver realmente los finales de línea de las ventanas CR LF. - Bjørn
Mi certificado simplemente terminó siendo un archivo vacío. Algo se rompió en la generación, supongo. Esta respuesta me animó a abrirla y ver eso. - flickerfly
Nota para los usuarios de Windows: probablemente deba convertir el formato de línea a UNIX incluso si está en Windows. DOS2UNIX no es un comando de Windows, sino uno de Linux. La buena noticia, Git para Windows lo proporciona. CigWin probablemente también, pero no estoy seguro de ello. - Ignacio Segura
Nota para los usuarios de Windows: una lista de permisos en la pestaña Propiedades / Seguridad de Windows Explorer se confunde después de copiar un archivo de permisos restringidos desde un recurso compartido de red con la cp de Cygwin. Por ejemplo, vi un "NUL SID", una entrada deshabilitada para Todos y usuarios de dominio. - eel ghEEz


Para cualquier persona que llegue a esta página con un error similar al intentar leer una Solicitud de firma de certificado (CSR) (tenga en cuenta que OP está leyendo un certificado): asegúrese de usar el comando OpenSSL correcto. x509 es para certificados y req es para CSRs:

openssl req -in server.csr -text -noout

vs

openssl x509 -in server.crt -text -noout

15
2017-12-26 11:21





Simplemente di vueltas y vueltas en círculos sobre esto, y resultó que tenía los certificados al revés, por ejemplo.

SSLCertificateFile    /etc/apache2/ssl/server.key
SSLCertificateKeyFile /etc/apache2/ssl/server.crt

en lugar de:

SSLCertificateFile    /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Algo para comprobar si está recibiendo este error.


14
2017-07-16 10:46



Solo cometí el mismo error, gracias por indicarme la solución :-) - rcomblen


En mi caso, encontré que mi certificado tenía diferentes caracteres "-". Debe haber sido un problema de copiar / pegar del administrador que colocó el certificado en el servidor, con el editor de texto reemplazado, con un carácter especial de Unicode en el camino.

Esto tomó horas para diagnosticar, y al final lo adiviné, edité el certificado en vi y eliminé los caracteres "-" existentes, y los volví a escribir.

Espero que esto ayude a alguien.


10
2018-04-26 14:53





>> openssl x509 -noout -text -in domain.com.crt 
unable to load certificate
16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

Sospecho que tiene un problema con el formato del certificado.

Ejecuta los dos comandos siguientes y danos la salida:

openssl x509 -text -inform DER -in domain.com.crt 
openssl x509 -text -inform PEM -in domain.com.crt 

8
2017-09-30 03:34



Gracias por esta respuesta. Pude determinar el formato que mis SA proporcionaron como ".cer" ya eran ".pem" incógnito - javafueled


En mi caso, me encontré con los errores del OP porque, en primer lugar, el que creó el archivo .crt para mí realmente creó un .PEM archivo formateado, y lo nombró .crt.

Descubrí esto corriendo en la siguiente guía útil: https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them

todo lo que tenía que hacer era cambiar mi nombre de .crt a un .pem, ¡y ya había terminado! La guía indicó que los errores de la pregunta del OP implican que el archivo de entrada ya tiene el formato PEM, por lo que no se puede intentar convertirlo a .pem desde un formato DER y, de hecho, no es necesario.


8
2017-10-29 18:51





Asegúrese de que su archivo no tenga espacios al final o dentro del archivo de certificado. Asegúrese cuidadosamente de que no haya espacios o espacios en blanco dentro de su archivo de certificado, seleccionando todo el texto y buscando espacios en blanco en un editor de solo texto.

También verifique si existen todos los archivos configurados y si son correctos.

Por ejemplo: en su otra publicación usted dice que su archivo .key se llama midomain.com.crt mientras que en la configuración vhost tiene domain.com.crt

SSLCertificateFile /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt
SSLCertificateKeyFile /etc/apache2/domain.ssl/domain.ssl.key/domain.com.key
SSLCertificateChainFile /etc/apache2/domain.ssl/ca.crt
SSLCACertificateFile /etc/apache2/domain.ssl/gs_intermediate_ca.crt

Compruebe de nuevo que todos los archivos anteriores realmente existen y son válidos.


3
2017-09-29 17:03



También compruebe que sus guiones son guiones. A los editores de texto de Microsoftian les gusta cambiar -- dentro –; Eso no fue muy divertido de solucionar. - Shane Madden♦
Sí, ya que estás en Ubuntu, solo abre un terminal y usa nano, por ejemplo. De esta manera usted estará seguro. - George Tasioulis
Hola, gracias por tu retroalimentación - lo he comprobado todo y todo está bien. He intentado verificar el archivo crt sin embargo obtengo: sudo openssl x509 -noout -text -in domain.com.crt unable to load certificate 16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE - williamsowen
¿La primera línea de su archivo domain.com.crt comienza con -----BEGIN CERTIFICATE----- y la última línea termina con -----END CERTIFICATE-----? - George Tasioulis


Si alguien más se encuentra con este problema y sus registros de errores de apache dicen algo como:

Inic: no se puede leer el certificado del servidor desde el archivo /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt

Asegúrese de no haber intercambiado su clave y los archivos de certificado en las declaraciones en la configuración de apache. Había apuntado la clave a mi archivo de certificado y el certificado a mi archivo de clave. Esta publicación me ayudó a resolver el problema, pero quería señalarlo como otro problema / solución potencial.


1
2017-07-09 20:41





Mi problema (que tenía el mismo error al instalar un nuevo servidor con Apache 2.4) era que Apache (2.4) no podía leer el archivo .crt binario. Lo importé en mi almacén de certificados personales (con mmc) y lo exporté como X.509 codificado en base 64 (.cer). ¡Renombré el archivo exportado al mismo nombre (.crt) (usado en mi httpd-ssl.conf) y funcionó de nuevo! El mismo certificado funcionó en mi antiguo servidor, ¿quizás Apache 2.4 es más estricto que 2.2? Buena suerte.


0
2018-06-05 14:06