我正在尝试解析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,但失败了。
发布于 2017-09-13 09:19:32
我和sunnycomes有同样的问题,他的评论是正确的。我在文件的最后一行末尾缺少一个'-‘。在此之前我有:
-----END CERTIFICATE----并将其更改为:
-----END CERTIFICATE-----修好了。我学会了在从终端复制证书文本时必须小心。
发布于 2018-03-30 15:18:00
额外注意:当pem文件包含CA和子CA链时,请确保-----END CERTIFICATE---- -----BEGIN CERTIFICATE-----不在同一行上。
发布于 2018-10-05 20:27:12
tl;dr
确保在开始和结束标记周围恰好有五个短划线 -----。
有关PEM证书的更多信息
正确的证书格式
关于证书文本编码的官方RFC 7468文档规定了以下规则:
BEGIN CERTIFICATE和END CERTIFICATE标记括起来,如下所示:-开始证书- bGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3Vt...-END CERTIFICATE-----
-----,在它们的行尾恰好有五个短划线 ----- 常见错误
在使用copy-pasting时,证书开头或结尾意外省略了
-结束证书-开始证书
(在同一行上结束并直接启动新证书将不起作用,因为这样会有10个破折号而不是5个破折号,证书解析器将无法正确检测标记)
之前有一个空行
正确链接证书
一些web服务器需要one file中的所有SSL/TLS (根、中间和最终用户)证书,但CA通常将它们的所有证书分开发送给您,因此您需要手动将它们连接起来。但在连接它们时要注意,因为它们的顺序很重要!
链接证书的正确顺序为:
证书最终用户certificate
要正确连接所有证书,可以使用以下bash命令:
cat end-user.crt <(echo) intermediate.pem <(echo) root.crt > bundled.crt确保将end-user.crt、intermediate.pem和root.crt替换为您的文件名。
顺便说一句,: .pem和.crt都是有效的SSL证书文件结尾/编码。你可以阅读更多关于SSL文件的here。
https://stackoverflow.com/questions/45048858
复制相似问题