Посмотреть pem сертификат linux

Обновлено: 07.07.2024

Выполнение openssl x509 -in bundle.crt -text -noout показывает только корневой сертификат.

как я могу увидеть все остальные сертификаты?

Это действительно сработало для меня, но я не понимаю детали, поэтому не могу сказать, есть ли какие-либо оговорки.

Следуя этим часто задаваемым вопросам , я привел меня к этот скрипт perl , который очень сильно подсказывает мне, что openssl не имеет встроенной поддержки обработки сертификат n th в пакете, и вместо этого мы должны использовать какой-либо инструмент для нарезки и ввода данных перед загрузкой каждого сертификата в openssl . Этот скрипт perl, свободно адаптированный из сценария Ника Берча, связанного выше, кажется, выполняет эту работу:

Java keytool выполняет трюк:

Аннотация: Windows doubleclick не работает. Windows считывает только первый сертификат в хранилище ключей и автоматически расширяет доверительную цепочку из встроенного хранилища сертификатов.

  1. Все, кроме первого сертификата в файле .crt , не отображаются
  2. В файле .crt вы можете получить другую контрольную цепочку, чем в файле ----+:=4=:+---- . Это может привести к неправильным выводам.

Это может быть не очень красиво или изящно, но это было быстро и сработало для меня, используя bash on linux и блоки с форматированием PEM в файле пакета ca-cert.

Вы можете поместить все в одну строку и отрегулировать параметры openssl. Мне очень жаль, что для этого было более элегантное решение, но в этом случае я думаю, что найти более элегантное решение заняло бы больше времени, чем взломать неэлегантный.

Поскольку нет решения на основе awk:

Первая команда разделяет пакет на сертификаты, ища строки BEGIN и END. Вторая команда проходит через извлеченные сертификаты и показывает их.

Oneliner, отображающий сводку каждого сертификата в файле.

(аналогичный коммандос упоминается в другом ответе, но это дает более короткий вывод без опции -text).

В bash обычно требуется только одна (длинная) строка кода: -)

Если вы хотите увидеть хороший короткий краткий вывод, вы используете эту версию. Полезно, если вы только проверяете, что вы включили весь свой сертификат, но на самом деле не проверяете использование /etc сертификата (ов).

На всякий случай, если ваша версия openssl не поддерживает все эти флаги, вы можете использовать некоторые egrep. То же самое, что и первое, но только pipe to egrep.

Чтобы проверить хэш MD5 закрытого ключа, вы можете сделать следующее.

openssl rsa -noout -modulus -in privateKey.key | openssl md5

Вот решение на основе awk, которое не полагается на промежуточные файлы.

Он работает, читая блоки PEM из stdin и конкатенируя каждый блок в одиночную строку с кодировкой base64. Затем строки считываются, декодируются и передаются в openssl как DER-кодированные сертификаты.

Метод Windows

Один из способов увидеть всю цепочку (в Windows, конечно), чтобы дважды щелкнуть crt, а затем посмотреть на вкладке «Путь к сертификату». Он покажет всю цепочку, даже если есть только промежуточный, или Root Cert. Подробнее см. Снимок экрана ниже. Если вы не в Windows, я приношу свои извинения за недостаток знаний с вариантами Unix /Linux.

Примечание: это может привести к ложным результатам, если промежуточный сертификат находится в вашем локальном хранилище ключей. Windows добавит его автоматически и не покажет только то, что было в комплекте.

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

                                             Â

Linux (метод Ubuntu)

Я забыл вашу первоначальную команду, и у вас есть одна вещь не к месту. Ваша команда должна выглядеть так:


Некоторые из сокращений, связанных с сертификатами:

  • SSL – Secure Socket Layer (Безопасный уровень сокета).
  • CSR – Certificate Signing Request (Запрос на подпись сертификата).
  • TLS – Transport Layer Security (Транспортный уровень безопастности).
  • PEM – Privacy Enhanced Mail
  • DER – Distinguished Encoding Rules
  • SHA – Secure Hash Algorithm (Безопасный hash алгорит).
  • PKCS – Public-Key Cryptography Standards (Стандарты шифрования публичных ключей).

Создание нового приватного ключа (Private Key) и Certificate Signing Request (CSR).

Так же, можно использовать такой вариант:

Создание самоподписанного сертификата (Self-Signed Certificate).

Пример: Чтобы создать self-signed сертификат на 2 год, используйте:

Проверка CSR файла.

и вы получите информацию.

Проверка подписи (signature):

Кем(кому) был выдан сертификат:

Показать открытый ключ (public key):

Создать приватный RSA ключ (Private Key).

Чтобы это сделать, выполните:

Если вам просто нужно генерировать RSA закрытый ключ, вы можете использовать команду что выше. Я включил 2048 шифрование, для безопастности.

Удалить ключевую фразу (Passphrase) с ключа.

Если вы установили ключевую фразу для ключа, то при каждом старте веб-сервера (Apache/Nginx) вы должны будите вводить пароль. Если это вас злит, вы можете с легкостью удалить passphrase с RSA ключа.

Проверка приватного ключа (Private Key)

Если вы сомневаетесь в ключевом файле, вы можете использовать команду что выше для проверки.

Проверка сертификата (Certificate).

Если вы хотите проверить данные сертификата( CN, OU, и т.д.), то вы можете использовать команду, которая даст вам сведения о сертификате:

Команда довольна простая в использовании.

Проверка подписанного сертификата (Certificate Signer Authority).

Можно узнать много полезного.

Создать тестовый SSL сервер.

Команда OpenSSL s_server реализует общий SSL/TLS-сервер. Она должна использоваться только для целей тестирования. В приведенном ниже примере данный сервер прослушивает соединения на порту 8080 и возвращает отформатированную HTML страницу статуса, который включает много информации о ciphers:

Проверить хеш вашего сертификата.

Конвертирование сертификатов с DER в PEM формат.

Как правило, при покупке SSL сертификатов, его отдают вам в формате .der и если вам нужно использовать его в веб-сервере или .pem формате, вы можете использовать команду выше, чтобы преобразовать такие сертификаты.

Конвертирование сертификатов с PEM в DER формат.

В случае, если вам необходимо изменить .pem формат в .der:

Конвертирование CSR c DER в PEM формат.

Создание CSR используя приватный ключ (private key).

Если вы не хотите создать новый секретный ключ, а хотите используя вместо существующего, вы можете с предыдущей командой.

Проверьте содержимое сертификата в PKCS12 формате.

Конвертирование PKCS12 формата в PEM сертификат.

Получить SHA-1 отпечаток сертификата или CSR

Чтобы получить отпечаток SHA1 сертификата с использованием OpenSSL, используйте команду, приведенную ниже:

Чтобы получить SHA1 отпечаток пальца CSR с использованием OpenSSL, используйте команду, приведенную ниже:

Получить MD5 отпечаток сертификата или CSR

Чтобы получить отпечаток MD5 сертификата с использованием OpenSSL, используйте команду, приведенную ниже:

Чтобы получить MD5 отпечаток пальца CSR с использованием OpenSSL, используйте команду, приведенную ниже:

Тестирование SSL сертификата по URL.

Я использую это довольно часто для проверки SSL-сертификатов по URL с сервера. Это очень удобно для проверки некоторых деталей протокола, шифров и CERT.

Узнать версию OpenSSL

Поверка PEM сертификата на завершение (Expiration Date).

Проверка завершения SSL сертификата (Expiration Date) по URL.

Проверить поддержку SSL версии V2/V3 по URL.

Проверка SSL версии V2:

Проверка SSL версии V3:

Проверка TLS 1.0:

Проверка TLS 1.1:

Проверка TLS 1.2:

Проверка поддержки cipher для сайта по URL.

Какой алгоритм используется в сертификате (проверка).

Или, используя URL:

Получить сертификат по URL

Команда что ниже, сохранит сертификат в файл прямо по URL сайта:

Если веб-сервер имеет несколько сертификатов на один IP-адрес, то вам нужно будет сообщить OpenSSL, какой сертификат будет использоваться, пример ниже:

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

В этой статье мы рассмотрим что такое сертификаты, какими они бывают, разберем подробно создание сертификата OpenSSL. Причем рассмотрим каждый этап, чтобы вам было легче понять что и как происходит.

Что такое сертификаты?

В этой инструкции мы будем иметь дело с такими видами ключей:

  • .pem, .crt, .cer - готовый, подписанный центром сертификации сертификат, расширения разные, но означают одно и то же. Если совсем просто, то сертификат, это подписанный открытый ключ, плюс немного информации о вашей компании;
  • .key - закрытый или открытый ключ;
  • .csr - запрос на подпись сертификата, в этом файле хранится ваш открытый ключ плюс информация, о компании и домене, которую вы указали.

А теперь рассмотрим как создать сертификат openssl, как его подписать и что для этого нужно сделать. Генерация ключей openssl - это довольно простая задача, если во всем разобраться.

Создание закрытого ключа и запроса на подпись

Вам необязательно подписывать сертификаты в центре сертификации CA, вы можете подписать их сами, но об этом потом. Весь процесс вам так и так придется пройти. Сначала рассмотрим как создать закрытый ключ с нуля, и указать необходимую информацию. Это CN, где должно быть указанно ваше доменное имя, для которого вы собираетесь использовать сертификат, также можно указать дополнительную информацию о вашей компании, адресе и организации, но это уже необязательно.

Чтобы создать закрытый ключ и запрос на подпись открытого ключа выполните такую команду:

openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr

Опция -newkey указывает, что нужно создать новую пару ключей, а в параметрах мы сообщаем тип rsa и сложность 2048 байт. Опция -nodes указывает, что шифровать ключ не нужно, опция -new указывает что нужно создать запрос csr. Если у вас уже есть закрытый ключ, то вы можете создать для него csr запрос такой командой:

openssl req -key domain.key -new -out domain.csr

Во время создания вам нужно будет указать всю необходимую информацию для csr, это в первую очередь домен и организация. Можно создавать закрытый ключ отдельно:

openssl genrsa -des3 -out domain.key 2048

openssl x509 -in domain.crt -signkey domain.key -x509toreq -out domain.csr

Параметр -x509toreq указывает, что нужно использовать сертификат для X509 для получения CSR. X509, это сертификаты, подписанные сами собой. Обычно сертификат подписывается другим сертификатом, а этот был подписан сам собой. Если вы получили сертификат от CA, то этот параметр не нужен.

Подпись сертификатов OpenSSL

Первый способ я рассматривать не буду. Здесь все просто. Либо используете утилиту сервиса, либо заполняете веб форму и получаете готовый сертификат. Второй вариант гораздо интереснее. Мы подпишем наш сертификат сами, ключом, на основе которого он был создан:

openssl x509 -signkey domain.key -in domain.csr -req -days 365 -out domain.crt

С помощью параметра -days мы указываем что сертификат будет действительным в течение 365 дней, то есть в течение года. Вы можете объединить все в одну команду и сразу создать закрытый ключ, csr и подписанный сертификат:

openssl req -newkey rsa:2048 -nodes -keyout domain.key
-x509 -days 365 -out domain.crt

Или создаем самоподписанный сертификат openssl из существующего закрытого ключа без csr:

openssl req -key domain.key -new -x509 -days 365 -out domain.crt

Опция -new говорит, что нужно запросить информацию о csr у пользователя. Чтобы браузер доверял ключу нужно этот же сертификат импортировать в список доверенных. А теперь рассмотрим третий способ выполнить создание сертификата OpenSSL - подписать его с помощью собственного CA, центра сертификации.

Вот вы сейчас думаете что это что-то такое сложное, да? А нет, это обычная папка, в которой лежит защищенный паролем закрытый ключ, с помощью которого мы будем подписывать все другие ключи. А открытая пара этого ключа должна быть добавлена во все браузеры, которые будут ему доверять.

Вообще, центр сертификации в крупных корпорациях находится на отдельных компьютерах, которые даже к сети не подключены. Но для примера мы разместим папку в нашей файловой системе /etc/:

Дальше нужно создать самоподписанный сертификат openssl для нашего CA:

openssl req -newkey rsa:4096 -x509 -extensions x509_ca -keyout /etc/ca/certs/ca.key -out /etc/ca/certs/ca.crt -days 3654

Параметр -extensions загружает необходимые расширения для создания сертификата центра сертификации. Мы устанавливаем долгий строк действия - десять лет. Осталось подписать наш сертификат, созданный ранее:

openssl ca -extensions x509_client -in

Готово, теперь наш сертификат подписан. Но теперь, чтобы браузеры ему доверяли нужно добавить сертификат CA в список доверенных браузера.

Просмотр сертификатов

Сертификаты сохраняются в формате pem, а это значит, что вы не сможете их открыть как текстовый файл и нужно использовать специальные команды для просмотра информации о них. Сначала смотрим содержимое csr:

openssl req -text -noout -verify -in domain.csr

Смотрим содержимое сертификата в режиме обычного текста:

openssl x509 -text -noout -in domain.crt

Проверяем действительно ли сертификат подписан нужным CA:

openssl verify -verbose -CAfile ca.crt domain.crt

Просмотр закрытого ключа:

openssl rsa -check -in domain.key

Чтобы проверить связаны ли между собой закрытый ключ, сертификат и открытый ключ можно подсчитать сумы md5 для этих ключей, если значения совпадут, то есть вероятность что это ключи из одной пары:

openssl rsa -noout -modulus -in domain.key | openssl md5
$ openssl x509 -noout -modulus -in domain.crt | openssl md5
$ openssl req -noout -modulus -in domain.csr | openssl md5

Выводы

В этой статье мы рассмотрели как выполняется генерация сертификата openssl, какие бывают сертификаты, ключи и как все эти понятия связаны между собой. Это очень сложная и обширная тема, и недостаточно одной статьи чтобы все охватить, но, надеюсь, что теперь вам намного понятнее как это все работает.

Возможно, вы видели файлы цифровых сертификатов с различными расширениями имен файлов, такими как .crt , .cer , .pem или .der . Эти расширения обычно соответствуют двум основным схемам кодирования сертификатов и ключей X.509: PEM (Base64 ASCII) и DER (двоичный). Однако есть некоторые совпадения и используются другие расширения, поэтому вы не всегда можете определить, с каким файлом вы работаете, просто взглянув на имя файла; вам может потребоваться открыть его в текстовом редакторе и посмотреть сами.

Что такое OpenSSL?
OpenSSL - очень полезный набор инструментов командной строки с открытым исходным кодом для работы с X.509 сертификаты, запросы на подпись сертификатов (CSRs) и криптографические ключи. Если вы используете вариант UNIX, такой как Linux или macOS, OpenSSL, вероятно, уже установлен на вашем компьютере. Если вы хотите использовать OpenSSL в Windows, вы можете включить Подсистема Linux в Windows 10 или установить Cygwin.

Расширения имени файла PEM

Как выглядит сертификат PEM?

Общие преобразования PEM

В приведенных ниже командах OpenSSL замените имена файлов ВСЕМИ ЗАГЛАВНЫМИ буквами фактическими путями и именами файлов, с которыми вы работаете.

Просмотр содержимого файла сертификата PEM

Конвертировать сертификат PEM в DER

DER (отличительные правила кодирования) это двоичная кодировка для X.509 сертификаты и закрытые ключи. В отличие от PEM, файлы в кодировке DER не содержат текстовых операторов, таких как -----BEGIN CERTIFICATE----- , Файлы DER чаще всего встречаются в контексте Java.

Расширения имени файла DER

DER-кодированные файлы обычно находятся с расширениями .der и .cer .

Как выглядит DER-кодированный сертификат?

Общие преобразования DER

В приведенных ниже командах OpenSSL замените имена файлов ВСЕМИ ЗАГЛАВНЫМИ буквами фактическими путями и именами файлов, с которыми вы работаете.

Просмотр содержимого файла сертификата в кодировке DER

Конвертировать DER-кодированный сертификат в PEM

Читайте также: