OpenSSL: rutinitas PEM: PEM_read_bio: tidak ada garis start: pem_lib.c: 703: Mengharapkan: SERTIFIKAT TEPERCAYA [ditutup]

100

Saya memerlukan nama hash untuk file yang akan dikirim di direktori CApath Stunnel. Saya punya beberapa sertifikat di direktori ini dan semuanya berfungsi dengan baik. Juga, saya memiliki sert server dan kunci server:

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

Ketika saya mencoba menghitung hash dari sertifikat baru saya, saya mendapatkan kesalahan:

/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

Seperti yang saya pahami, saya harus menandatangani sertifikat saya, tetapi saya tidak mengerti bagaimana saya bisa melakukannya. Tolong berikan solusinya.

PS:

Pesan

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

diposting ketika saya membuat c_hash untuk cert.pem Ini bukan server_cert.pem, ini adalah Root_CA dan isinya seperti

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

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

Saat saya menulis

openssl x509 -noout -text -in cert.pem

Di panel konsol saya melihat info ini:

    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
sumber
1
Might bantuan orang lain, aku punya kesalahan ini ketika saya salah bertukar keydan certfile dalam httpsobjek config yang diberikan kepada webpack.config's devServer.
tao

Jawaban:

43
  1. Karena Anda menggunakan Windows, pastikan bahwa sertifikat Anda di Windows "kompatibel", yang terpenting tidak ada ^Mdi akhir setiap baris

    Jika Anda membukanya akan terlihat seperti ini:

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

    Untuk mengatasi "ini" buka dengan Writeatau Notepad ++ dan ubah menjadi "gaya" Windows

  2. Coba jalankan openssl x509 -text -inform DER -in server_cert.pemdan lihat apa hasilnya, sepertinya kunci privat / rahasia tidak akan dipercaya, kepercayaan hanya diperlukan jika Anda mengekspor kunci dari keystore, bukan?

Noam Rathaus
sumber
2
Coba jalankan ini, openssl x509 -hash -noout -inia melakukan ekstraksi hash, lihat apakah itu membantu?
Noam Rathaus
itu berguna. Terima kasih. Tetapi di log STunnel saya melihat kesalahan 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 socketketika saya mencoba untuk membuat koneksi
lsv
Itu berarti sesuatu yang lain sama sekali, itu berarti bahwa kedua belah pihak tidak menggunakan yang sama cauntuk sertifikat CA mereka
Noam Rathaus
1
Terima kasih, openssl x509 -text -inform DER -in server_cert.pemmengonversi p7bsertifikat yang dikodekan (?) Saya menjadi sesuatu yang dapat digunakan.
Koen.
3
Masalah saya bukanlah ujung baris CRLF seperti yang dijelaskan di sini, tetapi saran ini cukup untuk membuat saya berada di jalur yang benar. Masalah saya adalah file saya disimpan Unicode byte ganda dengan BOM, dan openssl untuk windows tidak bisa mengatasinya. Saya menyimpan ulang sebagai ascii dan berhasil.
Elroy Flynn
35

Kemungkinan penyebab lainnya adalah mencoba menggunakan modul x509 pada sesuatu yang bukan x509

Sertifikat server dalam format x509, tetapi kunci privatnya adalah rsa

Begitu,

openssl rsa -noout -text -in privkey.pem
openssl x509 -noout -text -in servercert.pem
Rondo
sumber
14

Situasi saya sedikit berbeda. Solusinya adalah menghapus .pem dari semua yang ada di luar bagian CERTIFICATE dan PRIVATE KEY dan untuk membalik urutan kemunculannya. Setelah mengonversi dari file pfx ke pem, sertifikat terlihat seperti ini:

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

Setelah mengoreksi file, itu hanya:

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Gustavo da Silva Serra
sumber
M kinda noob, tolong sarankan saya..How untuk mengedit file ini di mac
shubhamkes
Saya mengalami kesalahan serupa. Membalik urutan berhasil bagi saya.
Jon Richards
Kunci saya datang dalam file terpisah yang saya perlukan untuk membuat file baru:cat $SOURCE/privkey.pem $SOURCE/fullchain.pem > server.pem
ErichBSchulz
14

Kesalahan saya hanya menggunakan file CSR, bukan file CERT.

SpiRail
sumber
2
setidaknya saya bukan satu-satunya yang melakukan kesalahan ini ... saya terkejut modul tidak memberi tahu kami tentang hal ini.
edwardsmarkf
1
ini butuh waktu berjam-jam untuk berolahraga. Semua dimulai dengan kesalahan samar dari xmlsec1,key is not found
Amichai Schreiber
8

Saya mengalami masalah yang sama saat menggunakan Windows, diperbaiki dengan membukanya di Notepad ++ dan mengubah pengkodean dari "UCS-2 LE BOM" menjadi "UTF-8".

peter n
sumber
6

Ubah encoding di notepad ++ UTF-8 dengan BOM . Begitulah cara kerjanya bagi saya

Yoda Zemichael
sumber
1
Iya! Ini berhasil untuk saya. Catatan Sertifikat PEM yang diekspor dari utilitas Keychain Apple tidak memiliki BOM dan ini mengganggu beberapa program.
HughHughTeotl
5

Anda bisa mendapatkan kesalahan yang menyesatkan ini jika Anda secara naif mencoba melakukan ini:

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

Mengenkripsi data menggunakan kunci pribadi tidak diizinkan oleh desain .

Anda dapat melihat dari opsi baris perintah untuk ssl terbuka bahwa satu-satunya opsi untuk encrypt -> decryptpergi ke satu arah public -> private.

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

Arah lain sengaja dicegah karena kunci publik pada dasarnya "bisa ditebak". Jadi, mengenkripsi dengan kunci pribadi berarti satu-satunya hal yang Anda peroleh adalah memverifikasi bahwa pembuatnya memiliki akses ke kunci pribadi tersebut.

The private key encrypt -> public key decryptarah disebut "penandatanganan" untuk membedakannya dari menjadi teknik yang dapat data sebenarnya aman.

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

Catatan: deskripsi saya adalah penyederhanaan untuk kejelasan. Baca jawaban ini untuk informasi lebih lanjut .

TrophyGeek
sumber