Преобразование файла .pem в .crt с помощью openssl - PullRequest
0 голосов
/ 09 июля 2020

Я хочу иметь возможность отправлять сертификаты в своих запросах API.

См. - Добавить сертификат по запросу с RestSharp

Как показано в этом сообщении. Мне нужно преобразовать .crt и .key в .pfx, однако мои текущие сертификаты - .pem, поэтому я подумал, что мне нужно сначала преобразовать их в .crt и .key, а затем использовать команду openssl, используемую в этом сообщении, чтобы преобразовать их в .pfx, а затем продолжите работу с остальной частью решения.

Мои сертификаты -

файл CRT - C: \ Users \ JohnSmith \ Downloads \ certsh \ client-crt. pem

Файл ключа - C: \ Users \ JohnSmith \ Downloads \ certsh \ client-key.pem

Мне удалось преобразовать файл ключа в .key, но при попытке чтобы преобразовать файл CRT, я получаю эту ошибку.

unable to load certificate 13668:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:697:Expecting: TRUSTED CERTIFICATE error in x509

Я использую эту команду, чтобы попытаться преобразовать .pem в .crt

x509 -outform der -in client-csr.pem -out client.crt

1 Ответ

1 голос
/ 09 июля 2020

Расширение .pem указывает, что формат файла - PEM (Privacy-Enhanced Mail) ( RF C 7468 ). Содержимым файла может быть сертификат, закрытый ключ, ключ publi c или что-то еще. Если вы откроете файл PEM в текстовом редакторе, вверху вы увидите -----BEGIN ?????-----.

Расширение .crt подразумевает, что содержимое файла является сертификатом. Однако расширение ничего не говорит о формате файла. Формат может быть PEM, DER (Особые правила кодирования) ( X.690 ) или что-то еще. Если файл содержит -----BEGIN CERTIFICATE-----, формат - PEM. С другой стороны, если файл содержит двоичные данные, вполне вероятно, что это формат DER.

Расширение .key подразумевает, что содержимое файла является закрытым ключом. Однако расширение ничего не говорит о формате файла. Формат может быть PEM, DER или что-то еще. Если файл содержит -----BEGIN PRIVATE KEY-----, формат - PEM. С другой стороны, если файл содержит двоичные данные, скорее всего, это формат DER.

Строка csr, которая является частью имени файла client-csr.pem, подразумевает, что содержимое это файл CSR (запрос на подпись сертификата). Обратите внимание, что CSR НЕ является сертификатом . Похоже, вы пытаетесь преобразовать формат файла client-csr.pem из PEM в DER, но CSR никогда не станет сертификатом, преобразовав формат файла. Я думаю, что вы должны дать команде openssl не client-csr.pem, а client-crt.pem.

Понимание взаимосвязи между ASN.1 ( X.680 ), DER ( X.690 ), BASE64 ( RF C 4648 ) и PEM ( RF C 7468 ) улучшит качество ваших вопросов и поможет вам не тратить время зря. Я надеюсь, что приведенные ниже схемы, взятые из " Иллюстрированный сертификат X.509 " , могут вам помочь.

enter image description here

введите описание изображения здесь

...