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:
...............
あなたはWindowsを使用しているので、Windowsのあなたの証明書が "互換"であることを確認してください、最も重要なことに、それは各行の終わりに^M
を持っていません
あなたがそれを開くと、それは次のようになります。
-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
「これ」を解決するには、Write
またはNotepad ++でそれを開き、それをWindowsの「スタイル」に変換させます。
openssl x509 -text -inform DER -in server_cert.pem
を実行して何が出力されるのかを確かめてみてください。秘密鍵/秘密鍵が信頼できない可能性は低いです。鍵ストアから鍵をエクスポートした場合にのみ信頼が必要です。
これのもう一つの考えられる原因はx509ではない何かでx509モジュールを使用しようとしています
サーバー証明書はx509形式ですが、秘密鍵はrsaです。
そう、
openssl rsa -noout -text -in privkey.pem
openssl x509 -noout -text -in servercert.pem
私の状況は少し違いました。解決策は、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」に変更することによって得られた場合。
私の間違いは単にCERTファイルの代わりにCSRファイルを使っていたことです。
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
注:説明をわかりやすくするために簡略化しています。 詳細については、この回答をお読みください .
メモ帳++UTF-8とBOMでエンコードを変更します。それは私のために働いた方法です