OpenSSL:PEMルーチン:PEM_read_bio:no start line:pem_lib.c:703:Expecting:TRUSTED CERTIFICATE [終了]


100

StunnelのCApathディレクトリに投稿するファイルのハッシュ名が必要です。私はこのディレクトリにいくつかの証明書を持っていますが、それらはうまく機能しています。また、私はサーバーsertとサーバーキーを持っています:

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

新しい証明書のハッシュを計算しようとすると、エラーが発生します。

/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

私は理解しているので、自分の証明書に署名する必要がありますが、その方法がわかりません。ソリューションを提供してください。

PS:

メッセージ

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

私が作ったときに投稿c_hashためのcert.pemこれは、server_cert.pemではありません、これはRoot_CAであり、それはのようなものであるコンテンツ

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

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

私が書くとき

openssl x509 -noout -text -in cert.pem

コンソールパネルに次の情報が表示されます。

    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
私が誤って交換されたときに他の誰かが、私はこのエラーを得役立つかもしれないkeycertのファイルhttpsconfigオブジェクトはに提供webpack.configさんdevServer
tao

回答:


43
  1. Windowsを使用しているため、Windowsの証明書が「互換性がある」ことを確認してください。最も重要なの^Mは、各行の終わりにないことです。

    開くと次のようになります。

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

    「これ」を解決するには、WriteまたはNotepad ++で開き、Windowsの「スタイル」に変換します。

  2. 実行openssl x509 -text -inform DER -in server_cert.pemして出力を確認します。秘密/秘密鍵が信頼できない可能性は低く、キーストアから鍵をエクスポートした場合にのみ信頼が必要ですか。


2
これを実行しopenssl x509 -hash -noout -inて、ハッシュ抽出を行います。それが役立つかどうかを確認しますか?
Noam Rathaus

それは便利です。ありがとう。しかし、STunnelログに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 socketro make connection
lsv

つまり、まったく別のことです。つまり、双方がcaCA証明書に同じものを使用していないことを意味します
Noam Rathaus

1
ありがとう、エンコードされた(?)証明書を使用可能なものにopenssl x509 -text -inform DER -in server_cert.pem変換しましたp7b
公園。

3
私の問題は、ここで説明されているCRLF行末ではありませんでしたが、この提案は私を軌道に乗せるのに十分でした。私の問題は、ファイルがBOM付きの2バイトUnicodeで保存されていて、windowsのopensslがそれを処理できないことでした。私はアスキーとして再保存し、それはうまくいきました。
Elroy Flynn

35

これの別の考えられる原因は、x509以外の何かでx509モジュールを使用しようとすることです

サーバー証明書はx509形式ですが、秘密鍵はrsaです

そう、

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

14

私の状況は少し違っていました。解決策は、CERTIFICATEおよびPRIVATE KEYセクションの外側のすべてから.pemを取り除き、それらが表示される順序を逆にすることでした。pfxからpemファイルに変換すると、証明書は次のようになります。

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

ファイルを修正した後は、次のようになりました。

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

Mちょっとnoob、plsが私に提案する..macでこのファイルを編集する方法
shubhamkes 2017年

同様のエラーが発生しました。順序を逆にするのがうまくいきました。
ジョンリチャードソン

私のキーは、新しいファイルを作成するために必要なcat $SOURCE/privkey.pem $SOURCE/fullchain.pem > server.pem
個別の

14

私の間違いは、CERTファイルの代わりにCSRファイルを使用することでした。


2
少なくともこの間違いをしたのは私だけではありません...モジュールがこれについて警告してくれないのには驚きました。
edwardsmarkf

1
これは私に運動するのに何時間もかかりました。すべてはxmlsec1からの不可解なエラーで始まりますkey is not found
Amichai Schreiber

8

私はWindowsを使用して同じ問題を抱えていましたが、Notepad ++で開き、エンコーディングを「UCS-2 LE BOM」から「UTF-8」に変更することで解決しました。


6

BOMを使用してnotepad ++ UTF-8のエンコーディングを変更します。それは私のためにそれが働いた方法です


1
はい!これでうまくいきました。注AppleのキーチェーンユーティリティからエクスポートされたPEM証明書にはBOMがなく、一部のプログラムを混乱させます。
HughHughTeotl

5

単純にこれを行おうとすると、この誤解を招くエラーが発生する可能性があります。

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

設計では、秘密鍵を使用したデータの暗号化は許可されていません

open sslのコマンドラインオプションから、encrypt -> decrypt一方向に進む唯一のオプションであることがわかりますpublic -> private

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

公開鍵は基本的に「推測できる」ため、反対方向は意図的に阻止されます。つまり、秘密鍵で暗号化するということは、作成者が秘密鍵にアクセスできることを確認することだけが得られるということです。

このprivate key encrypt -> public key decrypt方向は「署名」と呼ばれ、実際にデータを保護できる手法と区別されます。

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

注:私の説明は、わかりやすくするために簡略化しています。詳細については、この回答をお読みください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.