He estado configurando SSL para mi dominio hoy, y he encontrado otro problema: esperaba que alguien pudiera arrojar algo de luz.
Sigo recibiendo los siguientes mensajes de error:
[error] Init: no se puede leer el certificado del servidor del archivo /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt [error] Error de biblioteca SSL: error 218529960: 0D0680A8: rutinas de codificación asn1: ASN1_CHECK_TLEN: etiqueta incorrecta [error] Error de biblioteca SSL: error 218595386: 0D07803A: rutinas de codificación asn1: ASN1_ITEM_EX_D2I: error ann1 asn1
Estoy ejecutando Apache 2.2.16 y Ubuntu 10.10. Mi archivo .crt tiene las etiquetas de Inicio y Fin, y ha sido copiado exactamente del correo electrónico de confirmación que recibí, ¡muy frustrante!
¡Aclamaciones!
Editar >> Al intentar verificar el .crt Parece que no funciona:
>> openssl x509 -noout -text -in domain.com.crt incapaz de cargar el certificado 16851: error: 0906D06C: rutinas 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 PEM: PEM_read_bio: sin línea de inicio: pem_lib.c: 650: esperando: CERTIFICADO DE CONFIANZA
>> openssl x509 -text -inform DER -en dominio.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 de asn1 anidado: tasn_dec.c: 380: Tipo = X509
Editar >> (Aplausos por la ayuda por cierto)
>> grep '^ -----' dominio.com.crt ----- COMIENCE EL CERTIFICADO ----- ----- FINALIZAR CERTIFICADO -----
Acabo de enviar un correo electrónico a la empresa que proporciona el Certificado, respondieron>
He comprobado el archivo CSR que ha proporcionado y puedo asegurar que se generó correctamente. El error que está encontrando actualmente se debe a que está utilizando una línea de comando incorrecta para instalar la CSR. Deberá modificar este dominio.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
fuente
grep '^-----' domain.com.crt
?Respuestas:
¿Es posible que las líneas estén terminadas en ^ M? Este es un problema potencial al mover archivos de Windows a sistemas UNIX. Una manera fácil de verificar es usar el modo
vi
"muéstrame el binario", convi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt
.Si cada línea termina con un control-M, así
tienes un archivo en formato de línea terminada en Windows y a apache no le encantan.
Sus opciones incluyen mover el archivo nuevamente, teniendo más cuidado; o usando el
dos2unix
comando para quitarlos; También puede eliminarlos dentro de vi, si tiene cuidado.Editar : gracias a @ dave_thompson_085, quien señala que esta respuesta ya no se aplica en 2019. Es decir, Apache / OpenSSL ahora son tolerantes con líneas ^ M-terminadas, por lo que no causan problemas. Dicho esto, otros errores de formato, varios ejemplos diferentes de los cuales aparecen en los comentarios, aún pueden causar problemas; compruebe cuidadosamente si el certificado se ha movido a través de los sistemas.
fuente
-----BE
... ¡Gracias por la inspiración para verificar!Para cualquiera que llegue a esta página con un error similar cuando intente 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 yreq
es para CSR:vs
fuente
Simplemente di vueltas y vueltas en círculos sobre esto, y resultó que tenía los certificados por el camino equivocado, por ejemplo
en lugar de:
Algo para verificar si está recibiendo este error.
fuente
Sospecho que tiene un problema con el formato del certificado.
Ejecuta los dos comandos siguientes y danos el resultado:
fuente
En mi caso, descubrí 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 unicode especial en el camino.
Tomó horas diagnosticarlo, 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.
fuente
En mi caso, me encontré con los errores del OP porque quien creó el archivo .crt para mí en primer lugar realmente creó un archivo con formato .PEM y lo nombró .crt.
Descubrí esto al encontrarme con la siguiente guía útil: https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how -convertirlos
todo lo que tenía que hacer era cambiar el nombre de mi .crt a .pem, ¡y había terminado! La guía indicó que los errores de la pregunta del OP implican que el archivo de entrada ya está formateado PEM, por lo que no se puede intentar convertirlo a .pem desde un formato DER, y de hecho es innecesario.
fuente
Asegúrese de que su archivo no tenga espacios finales o iniciales dentro del archivo del 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.
Compruebe también si todos los archivos configurados existen y son correctos.
Por ejemplo: en su otra publicación dice que su archivo .key se llama my domain.com.crt mientras que en la configuración de vhost tiene domain.com.crt
Verifique nuevamente que todos los archivos anteriores realmente existan y sean válidos.
fuente
--
a–
; eso no fue muy divertido de solucionar.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
-----BEGIN CERTIFICATE-----
y termina la última línea-----END CERTIFICATE-----
?Si alguien más se encuentra con este problema y sus registros de error de apache dicen algo como:
Init: No se puede leer el certificado del servidor del archivo /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt
Asegúrese de no haber intercambiado sus archivos de clave y certificado en las declaraciones en la configuración de apache. Apunté 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.
fuente
Mi problema (al tener el mismo error al instalar un nuevo servidor con Apache 2.4) fue que Apache (2.4) no podía leer el archivo binario .crt. Lo importé en mi almacén de certificados personales (con mmc) y lo exporté como X.509 codificado en base-64 (.cer). ¡Cambié el nombre del archivo exportado al mismo nombre (.crt) (usado en mi httpd-ssl.conf) y funcionó nuevamente! El mismo certificado funcionó en mi antiguo servidor, ¿tal vez Apache 2.4 es más estricto que 2.2? Buena suerte.
fuente
En mi caso, tiene que ver con que BOM esté presente en el archivo. Uno podría despojarlo así:
No estoy seguro si siempre toma 3 bytes, por lo que la mejor manera debe ser:
fuente
Recibí el mismo error porque cambié .key con nombres de archivo .crt
fuente
Tuve un problema similar cuando accidentalmente usé un certificado IIS tipo p7b suministrado por el cliente en la configuración de apache. La conversión del certificado al formato x509 solucionó el error. Ambos tipos se ven iguales en la superficie pero aparentemente son diferentes en el interior.
fuente
Tuve este problema porque me enviaron el contenido de un archivo .p7b de estilo IIS pegado en un correo electrónico. Tiene las etiquetas "----- BEGIN CERTIFICATE -----" y "----- END CERTIFICATE -----", al igual que .pem, y el contenido utiliza una codificación base64 similar. Lo convertí a un archivo * .pem así:
Después de eso, Apache 2.2 estaba feliz.
fuente
Recientemente tuve este problema al usar Lets Encrypt (letsencrypt) en Windows. El certificado volvió codificado como UTF-16LE. Convertirlo a UTF-8 (usando dos2unix) resolvió el problema.
fuente
En mi caso fueron solo las líneas vacías. Cuando pegué el archivo crt desde ntepad o notepad ++ en nano siempre obtuve algo como
eliminar los espacios vacíos y poner todo en una línea resolvió el problema, por ejemplo:
fuente