OpenSSL: Routine PEM: PEM_read_bio: nessuna linea di partenza: pem_lib.c: 703: In attesa: CERTIFICATO DI FIDUCIA [chiuso]


100

Ho bisogno di un nome hash per il file da pubblicare nella directory CApath di Stunnel. Ho alcuni certificati in questa directory e funzionano bene. Inoltre, ho un server sert e una chiave del server:

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

Quando provo a calcolare un hash del mio nuovo certificato, ottengo un errore:

/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

A quanto ho capito devo firmare il mio certificato, ma non capisco come posso farlo. Per favore, fornisci la soluzione.

PS:

Il messaggio

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

pubblicato quando ho creato c_hash per cert.pem Questo non è server_cert.pem, questo è Root_CA ed è contenuto qualcosa di simile

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

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

Quando scrivo

openssl x509 -noout -text -in cert.pem

Nel pannello della console vedo queste informazioni:

    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:
...............

1
Potrebbe aiutare qualcun altro, ho ottenuto questo errore quando ho erroneamente scambiato keye certfile in httpsoggetto config fornito a webpack.config's devServer.
— tao

Risposte:


43
  1. Dato che sei su Windows, assicurati che il tuo certificato in Windows sia "compatibile", cosa più importante che non abbia ^Malla fine di ogni riga

    Se lo apri, apparirà così:

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

    Per risolvere "questo" aprilo con Writeo Notepad ++ e convertilo in "stile" Windows

  2. Prova a eseguire openssl x509 -text -inform DER -in server_cert.peme vedere qual è l'output, è improbabile che una chiave privata / segreta non sia affidabile, la fiducia è necessaria solo se hai esportato la chiave da un keystore, vero?


2
Prova a eseguire questo openssl x509 -hash -noout -infa l'estrazione di hash, vedi se aiuta?
— Noam Rathaus

è utile. Grazie. Ma nel registro di STunnel vedo l'errore 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 socketquando provo a effettuare la connessione
— lsv

Ciò significa qualcos'altro, significa che entrambe le parti non usano lo stesso caper il loro certificato CA
— Noam Rathaus

1
Grazie, openssl x509 -text -inform DER -in server_cert.pemho convertito il mio p7bcertificato codificato (?) In qualcosa di utilizzabile.
— Koen.

3
Il mio problema non erano le terminazioni di riga CRLF come descritto qui, ma questo suggerimento è stato sufficiente per mettermi in pista. Il mio problema era che il mio file veniva salvato in Unicode a doppio byte con una distinta materiali e openssl per Windows non poteva occuparsene. Ho salvato di nuovo come ASCII e ha funzionato.
— Elroy Flynn

35

Un'altra possibile causa di ciò è cercare di utilizzare il modulo x509 su qualcosa che non è x509

Il certificato del server è in formato x509, ma la chiave privata è rsa

Così,

openssl rsa -noout -text -in privkey.pem
openssl x509 -noout -text -in servercert.pem

14

La mia situazione era leggermente diversa. La soluzione è stata quella di rimuovere il .pem da tutto ciò che è al di fuori delle sezioni CERTIFICATE e PRIVATE KEY e di invertire l'ordine in cui apparivano. Dopo la conversione da pfx a pem, il certificato aveva questo aspetto:

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

Dopo aver corretto il file, era solo:

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

M kinda noob, pls mi suggerisce ... come modificare questo file in mac
— shubhamkes

Ho avuto un errore simile. Invertire l'ordine ha funzionato per me.
— Jon Richardson

Le mie chiavi erano in file separati di cui avevo bisogno per creare un nuovo file:cat $SOURCE/privkey.pem $SOURCE/fullchain.pem > server.pem
— ErichBSchulz

14

Il mio errore è stato semplicemente utilizzare il file CSR invece del file CERT.


2
almeno non sono l'unico che ha commesso questo errore ... sono sorpreso che il modulo non ci avverta di questo.
— edwardsmarkf

1
mi ci sono volute ore per risolverlo. Tutto inizia con un errore criptico da xmlsec1,key is not found
— Amichai Schreiber

8

Ho avuto lo stesso problema utilizzando Windows, ottenuto se risolto aprendolo in Notepad ++ e cambiando la codifica da "UCS-2 LE BOM" a "UTF-8".


6

Modifica la codifica in notepad ++ UTF-8 con BOM . È così che ha funzionato per me


1
Sì! Questo ha funzionato per me. Nota i certificati PEM esportati dall'utilità Portachiavi di Apple non hanno la distinta componenti e questo sconvolge alcuni programmi.
— HughHughTeotl

5

Puoi ottenere questo errore fuorviante se provi ingenuamente a farlo:

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

La crittografia dei dati utilizzando una chiave privata non è consentita in base alla progettazione .

Puoi vedere dalle opzioni della riga di comando per open ssl che le uniche opzioni encrypt -> decryptvanno in una direzione public -> private.

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

L'altra direzione è intenzionalmente impedita perché le chiavi pubbliche fondamentalmente "possono essere indovinate". Quindi, crittografare con una chiave privata significa che l'unica cosa che ottieni è verificare che l'autore abbia accesso alla chiave privata.

La private key encrypt -> public key decryptdirezione è chiamata "firma" per differenziarla dall'essere una tecnica che può effettivamente proteggere i dati.

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

Nota: la mia descrizione è una semplificazione per chiarezza. Leggi questa risposta per maggiori informazioni .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.