web-dev-qa-db-fra.com

Routines PEM: PEM_read_bio: fin de ligne incorrecte

J'essaie d'analyser le certificat de développeur dans le fichier embedded.mobileprovision. Tout d'abord j'utilise

security cms -D -i embedded.mobileprovision 

pour obtenir la chaîne de certificat de développeur base64. 

Ensuite, je divise la chaîne tous les 64 caractères et la stocke dans un fichier nommé dev.cer. 

Enfin, ajoutez -----BEGIN CERTIFICATE----- à la première ligne et -----END CERTIFICATE----- à la fin du fichier. 

Sur mon ordinateur Mac, je clique avec le bouton droit sur le fichier dev.cer et les informations sur le développeur sont toutes présentes. Cependant, lorsque j'utilise openssl x509 -in dev.cer -text -noout, une erreur survient:

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:

Le fichier dev.cer est le suivant:

-----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----

En passant, j’ai utilisé le décodeur de certificat en ligne pour décoder dev.cer, cela fonctionne bien. Voici l'URL:

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

Ce site a recommandé d'utiliser openssl, mais cela a échoué.

8
sunnycomes

J'ai eu le même problème que sunnycomes et son commentaire était correct. Il me manquait un '-' à la toute fin de la dernière ligne du fichier. Avant j'avais:

-----END CERTIFICATE----

et le changer pour:

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

corrigé J'ai appris qu'il faut faire attention lors de la copie de certificats d'un terminal.

18
AshleyS

Remarque supplémentaire: Lorsque le fichier pem contient des chaînes de CA et de sous-CA, assurez-vous que ----- FIN DU CERTIFICAT --------- BEGIN CERTIFICATE ----- __. ne sont pas sur la même ligne.

12
user9573609

tl; dr il doit y avoir cinq tirets ----- entourant les balises BEGIN et END.

Certificat de formatage

Assurez-vous que le contenu de chaque certificat est entouré des balises BEGIN et END comme ceci:

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

Faites attention: Selon le document officiel RFC 7468 document sur l'encodage textuel des certificats, il doit exister:

  • exactement cinq tirets----- au début de la ligne et un cinq tirets----- à la fin . (assurez-vous donc que vous n'avez pas omis un tiret accidentellement lors du copier-coller!)

  • et donc no deux limites d'encapsulation sur la même ligne, telles que: ----END CERTIFICATE----------BEGIN CERTIFICATE-----. (Finir et commencer directement un nouveau certificat sur la même ligne ne fonctionnera pas, car il y aurait alors dix tirets au lieu de cinq. )

Ajouter des certificats correctement dans un fichier

Certains serveurs Web ont besoin de tous les certificats SSL/TLS (racine, intermédiaire et utilisateur final) dans un fichier one, mais les autorités de certification envoient généralement tous les certificats séparés. Pour concaténer correctement tous les certificats, vous pouvez utiliser la commande suivante:

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

Il suffit de remplacer end-user.crt, intermediate.pem et root.crt par vos noms de fichiers.

Faites attention: L'ordre des certificats est important! Commencez avec le certificat d'utilisateur final, puis tous les certificats intermédiaires et terminez avec le certificat racine.

Soit dit en passant:.pem et .crt sont tous les deux des terminaisons/encodages de fichier de certificat SSL valides. 

Vous pouvez en savoir plus sur les fichiers SSL ici .

4
winklerrr

Cela fonctionne comme suit: tls.crt

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

amis s'il vous plaît!

NE PAS UTILISER "cat AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt> /tmp/commercial_ca.crt ..

this crée de faux fichiers .crt .. 

juste.

1 en tant que racine Copiez et collez le certificat dans un fichier texte (save en tant que commercial.crt) à l'aide de Vi, nano ou Notepad. Placez ce fichier dans le répertoire suivant / opt/zimbra/ssl/zimbra/commercial/

2 en tant que rootOuvrez le fichier CAbundle que vous avez reçu sur un fichier Zip à l'aide d'un éditeur de texte nano ou Vi et enregistrez-le sous le nom (commercial_ca.crt). Placez ce fichier dans le répertoire répertoire/opt/zimbra/ssl/zimbra/commercial/.

verify en tant qu'utilisateur Zimbra dans/opt/zimbra/ssl/zimbra/commercial /

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

deploy en tant qu'utilisateur Zimbra dans/tmp /

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

et

zmcontrol restart

Amusez-vous! De https://ssl.comodo.com/support/certificate-installation---zimbra-server.php

  • au cas où vous auriez des erreurs d’autorisations, vérifiez que vous possédez les fichiers * .crt with.

chown zimbra.zimbra /opt/zimbra/ssl/zimbra/commercial/*.crt (en tant que root)

chmod 700 /opt/zimbra/ssl/zimbra/commercial/*.crt (en tant qu'utilisateur zimbra)

1
Jeremy Alvarado