web-dev-qa-db-ja.com

OpenSSL:PEMルーチーン:PEM_read_bio:開始なし:pem_lib.c:703:期待しています:信頼された証明書

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

私が理解しているように私は私の証明書に署名しなければなりません、しかし私はそれをどのようにすることができるか理解していません。解決策を提供してください。

P:

メッセージ

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

cert.pemに対してc_hashを作成したときに投稿されました。

-----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:
...............
80
lsv
  1. あなたはWindowsを使用しているので、Windowsのあなたの証明書が "互換"であることを確認してください、最も重要なことに、それは各行の終わりに^Mを持っていません

    あなたがそれを開くと、それは次のようになります。

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

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

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

36
nrathaus

これのもう一つの考えられる原因はx509ではない何かでx509モジュールを使用しようとしています

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

そう、

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

私の状況は少し違いました。解決策は、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-----

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

7
peter n

私の間違いは単にCERTファイルの代わりにCSRファイルを使っていたことです。

6
SpiRail

naiveにしようとすると、この誤解を招くようなエラーが発生する可能性があります。

[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

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

4
TrophyGeek

メモ帳++UTF-8とBOMでエンコードを変更します。それは私のために働いた方法です

4
Yoda Zemichael