Для управления сертификатами X.509 используется следующая команда: $ openssl x509 <параметры>
В качестве параметров используются следующие ключи (дефисы перед ключами обязательны):
• -inform <DER|PEM> — формат сертификата во входном файле;
• -outform <DER|PEM> — формат сертификата в выходном файле;
• -in <имя_файла> — указание входного файла;
• -out <имя_файла> — указание выходного файла;
• -<хэш-функция> — указание хэш-функции, используемой для создания сертификата (по умолчанию SHA1, для алгоритма DES всегда используется SHA1);
• -text — вывести информацию о сертификате в текстовой форме;
• -noout — не выводить кодированный вариант запроса на подпись;
• -modulus — вывести длину открытого ключа из сертификата;
• -serial — вывести серийный номер сертификата;
• -subject_hash — вывести хэш от имени субъекта сертификации;
• -issuer_hash — вывести хэш от имени издателя сертификата;
• -subject — вывести имя субъекта сертификации;
• -issuer — вывести имя издателя сертификата;
• -email — вывести все адреса почтовых ящиков, если они указаны в сертификате;
• -ocsp_uri — вывести адрес сервера OCSP, если он указан в сертификате;
• -startdate — вывести дату начала действия сертификата;
• -enddate — вывести дату окончания действия сертификата;
• -dates — вывести обе даты;
• -fingerprint — вывести отпечаток сертификата в формате DER;
• -С — вывести сертификат в формате исходного кода на С;
• -signkey <имя_файла> — сделать входной файл самоподписанным сертификатом с использованием указанного ключа:
- если входной файл — сертификат, то имя издателя устанавливается равным имени субъекта, копируется открытый ключ, дата начала действия устанавливается на текущую дату, а дата окончания действия — на дату через количество дней, указанное в параметре -days;
- если входной файл — запрос на сертификацию, то создаѐтся сертификат с использованием предоставленного ключа, имя субъекта берѐтся из запроса на сертификацию;
• -keyform <PEM|DER> — формат закрытого ключа в файле, указанном параметром -signkey;
• -days — срок действия сертификата в днях (по умолчанию 30);
• -req — указание на то, что в качестве входного файла передаѐтся запрос на сертификацию;
• -set_serial <номер> — установить серийный номер сертификата (используется с параметрами - signkey или -ca);
• -CA <имя_файла> — указывает на файл с сертификатом центра сертификации, который будет
использован для подписи входного файла (используется для подписи запросов на сертификацию с параметром -req);
• -CAkey <имя_файла> — указывает на файл с закрытым ключом центра сертификации;
• -CAserial <имя_файла> — указывает на файл с серийным номером.
Практическая часть
Задание 1. Создание собственного СА сертификата
1. Настройка рабочего место.
1) Для того чтобы созданные ключи, запросы на сертификат, сертификаты и прочее не были перемешаны, рекомендуется создать для себя рабочий каталог mySSL, со следующими подкаталогами:
В данном случае C:\mySSL\ является рабочим каталогом, содержащим следующие подкаталоги и файлы:
- key - каталог с private-ключами;
- csr - каталог запросов на сертификат (Certificate Signing Request);
- cer - каталог сертификатов, для публичного пользования (Certificate);
- crl - каталог списков отозванных сертификатов (Certificate Revocation List);
- p12 - каталог сертификатов p12, с private-ключом (Personal Information Exchange File);
- database.txt - база данных выпущенных сертификатов;
- serial.txt - файл с текущим серийным номером сертификата.
2) Настройте OpenSSL. Для этого, в рабочем каталоге (C:\mySSL\) надо разместить конфигурационный файл openssl.cfg, после чего можно приступать к созданию сертификатов.
3) Выпустим собственный CA сертификат, для этого получим private-ключ для нашего CA сертификата:
Openssl> genrsa -des3 -out c:\mySSL\key\ca.key 1024
Ключ:
1024 - длина ключа в битах, не рекомендуется устанавливать ее больше данного значения, иначе могут быть проблемы с некоторыми реализациями SSL;
ca.key - имя файла ключа.
4) Создадим CA сертификат, выполнив команду:
openssl> req -config c:\mySSL\openssl.cfg -new -x509 -days 365 -key c:\mySSL\key\ca.key –out c:\mySSL\ cer\ca.cer –subj "/C=KZ/ST=Kazahstan/L=Taraz/O=MyCompany/OU=CA/CN=localhost"
Содержимое параметра -subj состоит из сегментов вида /$KEY=$VALUE, где $KEY может принимать такие значения:
- C - country, двухбуквенный код страны, например, RU или US
- ST - state, обычно это регион, область, район и т.д.
- L - locality, обычно это город
- O - organization, название организации
- OU - organization unit, отдел в организации
- CN - common name, обычно это адрес веб-сайта
Ключ:
- days 30 — это количество дней от текущего дня, в течение этого срока сертификат будет считаться действующим.
- ca.key — имя файла с закрытым ключом, созданным на предыдущем шаге
- ca.cеr — имя файла, в который будет записан созданный сертификат ЦС.
5) Откройте паку cer и просмотрите созданный сертификат
6) Сделаем экспорт в PKCS12, упаковав приватный ключ и сам CA сертификат:
Openssl> pkcs12 -export -in c:\mySSL\cer\ca.cer -inkey c:\mySSL\key\ca.key -out c:\mySSL\p12\ca.p12
7) Откройте и просмотрите содержимое папки р12
8) Выполним выпуск дочернего SSL сертификата, для этого сделаем запрос на SSL сертификат:
Openssl>req -config openssl.conf -new -newkey rsa:1024 -keyout key\test.key -nodes -out csr\test.csr -subj "/C=RU/ST=Russia/L=Moscow/O=MyCompany/OU=IT Departament/CN=localhost"
9) Подтвердим запрос на сертификат cjplfyysvCA сертификатом (подпишим серификат нашим CA сертификатом):
Openssl> ca -policy policy_any -config openssl.conf -in csr\test.csr -days 360 -out cer\test.cer
10) Сделайте экспорт в PKCS12 полученного SSL сертификата:
Openssl> pkcs12 -export -out p12/test.p12 -in cer/test.cer -inkey key/test.key
11) Для того чтобы добавить созданные сертификаты (PKCS12) в хранилище сертификатов надо в консоли управления оснастками (команда mmc) добавить оснастку "Сертификаты" для локальной машины, после чего, импортировать сертификаты и список отозванных сертификатов в соответствующие папки (в папку "Личные" и "Доверенные корневые центры сертификации").
12) Данные сертификата (проверить кем выдан):
Задание 2. Работа с сертфикатами в формате PEM
PEM - текстовый формат, в нём возможно хранение как сертификатов и секретных ключей, так и прочей информации. Возможно объединение нескольких PEM-файлов в один простым cat.
1. Просмотр содержимого CSR:
Openssl> req -noout -text -in c:\mySSL\csr\test.csr.csr
2. Отобразить информацию о сертификате в формате PEM:
Openssl> x509 -text -in c:\mySSL\cer\ca.cer
3. Просмотр отпечатков сертификата:
Openssl> x509 -fingerprint -noout -in c:\mySSL\cer\ca.cer (хеш MD5, для SHA1 добавить ключ -sha1).
4. Проверка секретного ключа и подписанного сертификата сравнением вывода (должен быть одинаковым):
Openssl> rsa -noout -modulus -in c:\mySSL\key\ca.key
openssl> x509 -noout -modulus -in c:\mySSL\cer\ca.cer
5. Отобразить информацию о закрытом ключе:
Openssl> rsa -text -in c:\mySSL\key\ca.key
Лабораторная работа №5.
Тема: Создание центра сертификации с поддержкой списков отозванных сертификатов с применением пакета OpenSSL
Цель работы: получить навык применения программного продукта OpenSSL для создания центра сертификации, выпуска, верификации и отзыва сертификатов, изучить формат списков отзыва сертификатов.