OpenSSL: rutinas PEM: PEM_read_bio: sin línea de inicio: pem_lib.c: 703: Esperando: CERTIFICADO DE CONFIANZA [cerrado]

100

Necesito un nombre de hash para el archivo para publicar en el directorio CApath de Stunnel. Tengo algunos certificados en este directorio y están funcionando bien. Además, tengo un sert de servidor y una clave de servidor:

cert = c:\Program Files (x86)\stunnel\server_cert.pem 
key = c:\Program> Files (x86)\stunnel\private\server_key.pem

Cuando intento calcular un hash de mi nuevo certificado, aparece un error:

/etc/pki/tls/misc/c_hash cert.pem

unable to load certificate 140603809879880:error:0906D06C:PEM
routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

Según tengo entendido, debo firmar mi certificado, pero no entiendo cómo puedo hacerlo. Por favor, proporcione la solución.

PD:

El mensaje

unable to load certificate 140603809879880:error:0906D06C:PEM
routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE:

publicado cuando hice c_hash para cert.pem Esto no es server_cert.pem, esto es Root_CA y tiene un contenido similar

-----BEGIN CERTIFICATE-----  
...6UXBNSDVg5rSx60=.. 

-----END CERTIFICATE-----

Cuando yo escribo

openssl x509 -noout -text -in cert.pem

En el panel de la consola veo esta información:

    Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=BE, ST=BB, L=BB, O=BANKSYS NV, OU=SCY, CN=TEST Root CA
        Validity
            Not Before: May 31 08:06:40 2005 GMT
            Not After : May 31 08:06:40 2020 GMT
        Subject: C=BE, ST=BB, L=BB, O=BB NV, OU=SCY, CN=TEST Root CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:82:c8:58:1e:e5:7a:b2:63:a6:15:bd:f9:bb:1f:
............
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Subject Key Identifier:
                76:70:AB:92:9B:B1:26:CE:9E:93:D8:77:4F:78:0D:B8:D4:6C:DA:C6
    Signature Algorithm: sha1WithRSAEncryption
         2c:7e:bd:3f:da:48:a4:df:8d:7c:96:58:f7:87:bd:e7:16:24:
...............
lsv
fuente
1
Podría ayudar a otra persona, tengo este error cuando erróneamente intercambiado keyy certarchivos de httpsobjeto de configuración proporcionado a webpack.config's devServer.
tao

Respuestas:

43
  1. Ya que está en Windows, asegúrese de que su certificado en Windows sea "compatible", lo más importante es que no tenga ^Mal final de cada línea

    Si lo abre, se verá así:

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

    Para resolver "esto" ábralo con Writeo Notepad ++ y haga que lo convierta al "estilo" de Windows

  2. Intente ejecutar openssl x509 -text -inform DER -in server_cert.pemy ver cuál es el resultado, es poco probable que una clave privada / secreta no sea confiable, solo se necesita confianza si exportó la clave desde un almacén de claves, ¿verdad?

Noam Rathaus
fuente
2
Intenta ejecutar esto openssl x509 -hash -noout -in, hace extracción de hash, ¿ves si ayuda?
Noam Rathaus
eso es útil. Gracias. Pero en el registro de STunnel veo el error SSL_accept: 14094418: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socketcuando intento establecer la conexión
lsv
Eso significa algo completamente diferente, significa que ambas partes no están usando lo mismo capara su certificado CA
Noam Rathaus
1
Gracias, openssl x509 -text -inform DER -in server_cert.pemconvertí mi p7bcertificado codificado (?) En algo utilizable.
Koen.
3
Mi problema no eran los finales de línea CRLF como se describen aquí, pero esta sugerencia fue suficiente para encaminarme. Mi problema fue que mi archivo se guardó Unicode de doble byte con una lista de materiales, y openssl para Windows no pudo lidiar con eso. Volví a guardar como ascii y funcionó.
Elroy Flynn
35

Otra posible causa de esto es intentar usar el módulo x509 en algo que no es x509

El certificado del servidor tiene formato x509, pero la clave privada es rsa

Entonces,

openssl rsa -noout -text -in privkey.pem
openssl x509 -noout -text -in servercert.pem
Rondó
fuente
14

Mi situación fue un poco diferente. La solución fue quitar el .pem de todo lo que estaba fuera de las secciones CERTIFICATE y PRIVATE KEY e invertir el orden en que aparecían. Después de convertir de archivo pfx a pem, el certificado se veía así:

Bag Attributes
localKeyID: ...
issuer=...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Bag Attributes
more garbage...
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

Después de corregir el archivo, fue solo:

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Gustavo da Silva Serra
fuente
M un poco novato, los pls me sugieren ... Cómo editar este archivo en mac
shubhamkes
Tuve un error similar. Invertir el orden funcionó para mí.
Jon Richardson
Mis claves vinieron en archivos separados que necesitaba para crear un nuevo archivo:cat $SOURCE/privkey.pem $SOURCE/fullchain.pem > server.pem
ErichBSchulz
14

Mi error fue simplemente usar el archivo CSR en lugar del archivo CERT.

SpiRail
fuente
2
al menos no soy el único que cometió este error ... me sorprende que el módulo no nos advierte de esto.
edwardsmarkf
1
esto me llevó horas resolverlo. Todo comienza con un error críptico de xmlsec1,key is not found
Amichai Schreiber
8

Tuve el mismo problema al usar Windows, pero lo solucioné abriéndolo en Notepad ++ y cambiando la codificación de "UCS-2 LE BOM" a "UTF-8".

peter n
fuente
6

Cambie la codificación en notepad ++ UTF-8 con BOM . Asi funciono para mi

Yoda Zemichael
fuente
1
¡Si! Esto funcionó para mí. Tenga en cuenta que los certificados PEM exportados desde la utilidad Keychain de Apple no tienen la lista de materiales y esto altera algunos programas.
HughHughTeotl
5

Puede obtener este error engañoso si ingenuamente intenta hacer esto:

[clear] -> Private Key Encrypt -> [encrypted] -> Public Key Decrypt -> [clear]

El diseño no permite encriptar datos usando una clave privada .

Puede ver en las opciones de la línea de comando para abrir ssl que las únicas opciones encrypt -> decryptvan en una dirección public -> private.

  -encrypt        encrypt with public key
  -decrypt        decrypt with private key

La otra dirección se evita intencionalmente porque las claves públicas básicamente "se pueden adivinar". Por lo tanto, cifrar con una clave privada significa que lo único que gana es verificar que el autor tenga acceso a la clave privada.

La private key encrypt -> public key decryptdirección se llama "firma" para diferenciarla de ser una técnica que realmente puede proteger los datos.

  -sign           sign with private key
  -verify         verify with public key

Nota: mi descripción es una simplificación para mayor claridad. Lea esta respuesta para obtener más información .

TrophyGeek
fuente