web-dev-qa-db-ja.com

PEMルーチン:PEM_read_bio:bad end line

Embedded.mobileprovisionファイルの開発者証明書を解析しようとしています。最初に使用します

security cms -D -i embedded.mobileprovision

base64開発者証明書文字列を取得します。

次に、文字列を64文字ごとに分割し、dev.cerという名前のファイルに保存しました。

最後に、最初の行に-----BEGIN CERTIFICATE-----を追加し、ファイルの最後に-----END CERTIFICATE-----を追加します。

私のMacコンピューターでは、dev.cerファイルを右クリックすると、開発者情報がすべて表示されます。ただし、openssl x509 -in dev.cer -text -nooutを使用すると、エラーが発生します。

unable to load certificate
69721:error:0906D066:PEM routines:PEM_read_bio:bad end line:/BuildRoot/Library/Caches/com.Apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/crypto/pem/pem_lib.c:747:

Dev.cerファイルは次のとおりです。

-----BEGIN CERTIFICATE-----
MIIFljCCBH6gAwIBAgIIIP7GMO9cWzYwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV
BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js
ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3
aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
HhcNMTcwNDI5MDMzMDA4WhcNMTgwNDI5MDMzMDA4WjCBiTEaMBgGCgmSJomT8ixk
AQEMCk1ENFA0UTg1WlExMzAxBgNVBAMMKmlQaG9uZSBEZXZlbG9wZXI6IGFtbW1p
IGFtbW1pIChXM1BSS1JDVDRRKTETMBEGA1UECwwKVktRNTZVQ0c4ODEUMBIGA1UE
CgwLYW1tbWkgYW1tbWkxCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAwudboPuPnImOssBCw9vISRnnivreVwOuDAu77u47zIU8uTag
bzktX6pF54YToSLQHeOaNNQfZ7idccU2DKVBr3etz/++ca4HNadeUaEm2VWW4kEq
3iKIo1wZZhJJR6bQl4q797U0+f7eEXLKD4fjfidEF+ceAxAsX5YIuokq3K/B+XW3
tKk7D4nCaaCyJ9/+aJkFKT/oOxWRD0NYi5vXpni/3Plj5Qu3kDGrTUQaGCXXjRrA
E3mOVS4M2W5sFoOUpBxcfK7ajs+HUZNp0Gvb04OeD4O0lLTxcNu6omhG3MzOo81F
T+bkdxLM7XkIbNlIjYhyxGRynpgAKmiR9B/oeQIDAQABo4IB8TCCAe0wPwYIKwYB
BQUHAQEEMzAxMC8GCCsGAQUFBzABhiNodHRwOi8vb2NzcC5hcHBsZS5jb20vb2Nz
cDAzLXd3ZHIwMTAdBgNVHQ4EFgQUF8T1dPnBmZfKfG0+lHtczMuGy9owDAYDVR0T
AQH/BAIwADAfBgNVHSMEGDAWgBSIJxcJqbYYYIvs67r2R1nFUlSjtzCCAR0GA1Ud
IASCARQwggEQMIIBDAYJKoZIhvdjZAUBMIH+MIHDBggrBgEFBQcCAjCBtgyBs1Jl
bGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMg
YWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1z
IGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBj
ZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMDYGCCsGAQUFBwIBFipo
dHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eS8wDgYDVR0P
AQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMBMGCiqGSIb3Y2QGAQIB
Af8EAgUAMA0GCSqGSIb3DQEBCwUAA4IBAQA1//RUQ+hnCxfzSKO13qtuSb4IUrY5
bjkRKIAUlxN5aYVN5NIzCGxmahlDA/Rjw8MLVA8dWbT0QMSqx5IXC+Ov3JNZlkL0
5+RBuZEtZL7IZp0L3ZrCFtuizaunH9fZWbyFyfLACIYqZqP40N1+wIx1l4Es65Zu
WSeDeQMutda8DpmtCJhrnod9B1vfvDc3FUSmbJbvkLFh2UCgqtE9moLYI8qFMzqe
CQUJdPGdE+2WNv0wM8/cFIG/audSvEADKg1DgO+j6oP+urUe1gLsyzyv10J7/XA4
nmDuP1UNG7O7ADbdEOxhRiB96ZNwgcw9Q0wv9H9jMa+NNti6SxLud2+B
-----END CERTIFICATE----

ところで、オンライン証明書デコーダーを使用してdev.cerをデコードしましたが、うまく機能します。 URLは次のとおりです。

https://www.sslshopper.com/certificate-decoder.html

このサイトはopensslの使用を推奨しましたが、失敗しました。

14
sunnycomes

Sunnycomesと同じ問題があり、彼のコメントは正しかった。ファイルの最終行の最後に「-」がありませんでした。私がいた前に:

-----END CERTIFICATE----

変更して:

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

それを修正しました。端末から証明書のテキストをコピーするときは注意する必要があることを学びました。

23
AshleyS

特記事項:pemファイルにCAおよびサブCAチェーンが含まれる場合、----- END CERTIFICATE ---- ----- BEGIN CERTIFICATE -----が同じ行にないことを確認してください。

20
user9573609

tl; dr5つのダッシュが必要-----BEGINおよびENDタグを囲んでいます。

証明書のフォーマット

各証明書の内容がBEGINおよびENDタグで囲まれていることを確認してください:

-----BEGIN CERTIFICATE-----
bGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMg
-----END CERTIFICATE-----

注意:公式によると RFC 7468 証明書のテキストエンコーディングに関するドキュメントがある必要があります:

  • 正確に5つのダッシュ-----行の先頭に5つのダッシュ----- 最後に。 (コピーペースト中に誤ってダッシュを1つ省略していないことを確認してください!)

  • したがって、同じ行に2つのカプセル化境界はありません、たとえば:----END CERTIFICATE----------BEGIN CERTIFICATE-----。 (したがって、同じ行で新しい証明書を終了して直接開始することはできません。5つのダッシュではなく10のダッシュがあるためです。)

1つのファイルに証明書を正しく追加する

一部のWebサーバーでは、1つのファイルにすべてのSSL/TLS(ルート、中間、エンドユーザー)証明書が必要ですが、CAは通常すべての証明書を分けて送信します。すべての証明書を正しく連結するには、次のコマンドを使用できます。

cat end-user.crt <(echo) intermediate.pem <(echo) root.crt > bundled.crt

end-user.crtintermediate.pemおよびroot.crtとファイル名。

注意:証明書の順序は重要です!エンドユーザー証明書から始めてから、すべての中間証明書とルート証明書で終わります。

ところで:.pemおよび.crtは両方とも有効なSSL証明書ファイルの末尾/エンコードです。

SSLファイルの詳細については、こちらをご覧ください こちら

9
winklerrr

友達ください!

使用しないでください "cat AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt> /tmp/commercial_ca.crt ..

これは間違った.crtファイルを作成します..

just。

1ルートとして証明書をコピーしてテキストファイルに貼り付けます(save as Commercial.crt)Vi、nano、またはメモ帳を使用します。このファイルを次のディレクトリに配置します/ opt/zimbra/ssl/zimbra/commercial /

2ルートとしてテキストエディターnanoまたはViを使用してZipファイルで受け取ったCAbundleを開き、(commercial_ca.crt)。このファイルを次のディレクトリ/ opt/zimbra/ssl/zimbra/commercial /に配置します

verify/ opt/zimbra/ssl/zimbra/commercial /のZimbraユーザーとして

/opt/zimbra/bin/zmcertmgr verifycrt comm commercial.key commercial.crt commercial_ca.crt

/ tmp /のZimbraユーザーとしてデプロイ

/opt/zimbra/bin/zmcertmgr deploycrt comm commercial.crt commercial_ca.crt

and

zmcontrol restart

楽しむ! from https://ssl.comodo.com/support/certificate-installation---zimbra-server.php

  • アクセス許可エラーが発生した場合は、*。crtファイルを所有していることを確認してください。

chown zimbra.zimbra /opt/zimbra/ssl/zimbra/commercial/*.crt(ルートとして)

chmod 700 /opt/zimbra/ssl/zimbra/commercial/*.crt(zimbraユーザーとして)

2
Jeremy Alvarado

(swiftmailerで電子メールに署名するために)秘密キーを保存するときに同じ問題(同じエラーメッセージ)がありました。動いていて、突然止まってしまいました。

何が起こるかというと、最初はテストしていたので、コードのフォーマットについて心配していませんでした。テスト後、関数に返される変数にキーを入れることを選択しました。これで、気づかずに、私はあなたがイメージで見るようにキーコンテンツにいくつかのタブ文字を挿入することになりました。コンテンツを別のファイルに保存することをお勧めします。このファイルには、不要な/余分な文字はありません

enter image description here

1
Johny

次のように機能します:tls.crt

-----BEGIN CERTIFICATE-----
the content of certificate.crt
the content of ca_bundle.crt
-----END CERTIFICATE-----
1
ScottLee

WindowsマシンからRHEL 7に証明書をコピーするときにも同様の問題がありました。中間およびルート証明書のすべての行の末尾に「^ M」があり、vimで証明書を表示する場合にのみ表示されます。

回避策は、証明書を編集してvimを実行することでした:

:%s/^ M $ //

これにより、各行の最後にあるすべての^ Mが削除されます。

(^ Mを取得するには、Ctrl + Shiftを押しながらvとmを連続して押す必要があります)

0
Trospe