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.