Відповіді:
Розширення файлів для криптографічних сертифікатів насправді не такі стандартизовані, як можна було б очікувати. Windows за замовчуванням розглядає подвійне клацання .crt
файлу як запит на імпорт сертифіката в магазин кореневих сертифікатів Windows, але розглядає.cer
файл як запит просто для перегляду сертифіката. Отже, вони відрізняються тим сенсом, що Windows має певне притаманне інше значення для того, що відбувається, коли ви двічі клацніть кожен тип файлів.
Але спосіб, яким Windows обробляє їх, коли ви двічі клацніть по них, - це лише одна різниця між ними. Обидва розширення просто означають, що він містить публічний сертифікат. Ви можете перейменувати файл сертифіката, щоб використовувати одне розширення замість іншого в будь-якій системі чи конфігураційному файлі, які я бачив. На платформах, що не належать до Windows (і навіть у Windows), люди не особливо ретельно ставляться до того, яке розширення вони використовують, і ставляться до них обох взаємозамінно, оскільки між ними немає різниці, якщо вміст файлу є правильним.
Зробити заплутаність у тому, що є два стандартних способи зберігання даних сертифікатів у файлі: один - це "двійкове" кодування X.509, а інший - текстове "кодування" base64, яке зазвичай починається з " -----BEGIN CERTIFICATE-----
". Вони кодують однакові дані, але різними способами. Більшість систем приймають обидва формати, але, якщо вам потрібно, ви можете конвертувати один в інший за допомогою openssl або інших інструментів. Кодування в файлі сертифіката дійсно не залежить від того, яке розширення хтось надав.
Відповідно до документації mod_ssl :
SSLCertificateFile:
Name: SSLCertificateFile
Description: Server PEM-encoded X.509 certificate file
Файл сертифіката повинен бути кодованим PEM X.509, файл файлу сертифіката:
openssl x509 -inform DER -in certificate.cer -out certificate.pem
zscaler
, працює vagrant
на win
( vbox
homestead
), встановивши наші довірені кореневі сертифікати в мандрівну коробку? Я був би scp
їх, потім скористався перетворенням і посилання на них, /etc/ssl/certs
а також скопіював вміст у ca-certificates.crt
файл перед повторним виданням, і все ще я отримав google-recaptcha
tls
ssl
помилку file_get_contents
на вікні розробника.
В основному є два типи кодування сертифікатів CER, DER та Base64. Коли тип DER повертає сертифікат завантаження помилки (підпрограми кодування asn1), спробуйте PEM і він спрацює.
openssl x509 -inform DER -in certificate.cer -out certificate.crt
openssl x509 -inform PEM -in certificate.cer -out certificate.crt
Я припускаю, що у вас є файл .cer, що містить дані сертифікованого кодуванням PKCS # 7, і ви хочете перетворити його в кодовані PEM дані сертифіката (як правило, .crt або .pem файл). Наприклад, файл .cer, що містить дані, закодовані PKCS # 7, виглядає так:
----- ПОЧАТОК PKCS7 ----- MIIW4gYJKoZIhvcNAQcCoIIW0zCCFs8CAQExADALBgkqhkiG9w0BBwGggha1MIIH ... POI9n9cd2cNgQ4xYDiKWL2KjLB + 6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G + bKHADEA ----- END PKCS7 -----
Дані сертифікату PEM виглядають приблизно так:
----- ПОЧАТИ СЕРТИФІКАТ ----- MIIHNjCCBh6gAwIBAgIQAlBxtqKazsxUSR9QdWWxaDANBgkqhkiG9w0BAQUFADBm ... nv72c / OV4nlyrvBLPoaS5JFUJvFUG8RfAEY = ----- ЗАКОННИЙ СЕРТИФІКАТ -----
Існує команда OpenSSL, яка перетворить файли .cer (з даними PKCS # 7) у дані PEM, з якими ви можете розраховувати ( BEGIN CERTIFICATE
блок у прикладі вище). Ви можете примусити дані PKCS # 7 у формат PEM за допомогою цієї команди у файлі, який ми будемо називати certfile.cer:
openssl pkcs7 -text -in certfile.cer -print_certs -outform PEM -out certfile.pem
Зауважте, що файл .cer або .pem може містити один або більше сертифікатів (можливо, весь ланцюжок сертифікатів).
CER - сертифікат X.509 у двійковій формі, кодується DER .
CRT - це бінарний сертифікат X.509, інкапсульований у текстовому ( базовому 64 ) кодуванні.
Це не те саме кодування.
Відповідь на питання, як перетворити .cer файл у .crt файл (вони закодовані по-різному!), Це:
openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt
openssl x509 -inform der -in certificate.cer -out certificate.pem
unable to load PKCS7 object
Я використовую команду:
openssl x509 -inform PEM -in certificate.cer -out certificate.crt
Але CER - сертифікат X.509 у двійковій формі, кодується DER. CRT - це бінарний сертифікат X.509, інкапсульований у текстовому (базовому-64) кодуванні.
Через це, можливо, ви повинні використовувати:
openssl x509 -inform DER -in certificate.cer -out certificate.crt
А потім імпортувати ваш сертифікат:
Скопіюйте свій КА на dir:
/usr/local/share/ca-certificates/
Використовувати команду:
sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
Оновіть магазин CA:
sudo update-ca-certificates
Якщо файл cer має двійковий формат, його потрібно перетворити на
openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt
Файл .cer та .crt повинен бути взаємозамінним, що стосується імпортування їх у сховище ключів.
Погляньте на вміст файлу .cer. Стерти що-небудь перед -----BEGIN CERTIFICATE-----
рядком і після -----END CERTIFICATE-----
рядка. Вам залишиться рядок BEGIN / END з купою матеріалів, закодованих Base64.
-----BEGIN CERTIFICATE-----
MIIDQTCCAqqgAwIBAgIJALQea21f1bVjMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD
...
pfDACIDHTrwCk5OefMwArfEkSBo/
-----END CERTIFICATE-----
Потім просто імпортуйте його у свій файл ключів за допомогою keytool.
keytool -import -alias myalias -keystore my.keystore -trustcacerts -file mycert.cer
Просто роби
openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt
CER
аCRT
розширення нічого не означають. Різні постачальники PKI використовують різні розширення для однієї і тієї ж речі. Якщо файл є двійковим, то його, ймовірно, кодується ASN.1 / DER. Якщо файл читається людиною-----BEGIN CERTIFICATE-----
, його PEM закодовано. Що у вас є (DER або PEM), і що вам потрібно (DER або PEM)?