Для работ, связанных с центром сертификации X.509, используется следующая команда:
$ openssl ca <параметры>
В качестве параметров используются следующие ключи (дефисы перед ключами обязательны):
• - config <имя_файла> — указывает на файл с настройками центра сертификации (описание файла дано ниже; также на этот файл указывает содержимое переменной окружения OPENSSL_CONF);
• - name <имя_секции> — указывает на секцию файла настроек, которую нужно использовать, иначе используется секция [ ca ] или секция, указанная в параметре default_ca в секции [ ca ];
• - in <имя_файла> — указывает на входной файл, содержащий запрос на подпись;
• - ss_cert <имя_файла> — указывает на входной файл, содержащий самоподписанный сертификат, требующий подписи центра сертификации;
• - out <имя_файла> — указывает выходной файл, в котором будет храниться сертификат;
• - outdir <имя_каталога> — указывает выходной каталог, в котором сертификат будет размещѐн под именем <серийный_номер>.pem;
• - cert <имя_файла> — указывает на сертификат центра сертификации;
• - keyfile <имя_файла> — указывает на зарытый ключ центра сертификации;
• - key <пароль> — парольная фраза, которой защищѐн ключ;
• - selfsign — указывает на то, что сертификат должен быть подписан тем же ключом, что и запрос на сертификацию
• - passin <источник_пароля> — указывает на источник парольной фразы (более безопасный метод, чем параметр -key);
• - verbose — повышенный уровень детализации выполняемых операций;
• - notext — не выводить сертификат в текстовой форме в выходной файл;
• - startdate — установить дату начала действия сертификата (в формате ГГММДДЧЧММСС);
• - enddate — установить дату окончания действия сертификата (в формате ГГММДДЧЧММСС);
• -days <значение> — срок действия сертификата в днях;
• -md <хэш_функция> — используемая для создания подписи хэш-функция;
• -gencrl — генерация CRL на основе информации в индексном файле;
• -crldays <количество> — число дней до выхода следующей версии CRL;
• -crlhours <количество> — число часов до выхода следующей версии CRL;
• -revoke <имя_файла> — отозвать сертификат, хранящийся в указанном файле.
Для валидации сертификатов X.509 используется следующая команда:
$ openssl verify <параметры>
В качестве параметров используются следующие ключи (дефисы перед ключами обязательны):
- CApath <имя_каталога> — каталог с доверенными сертификатами (сертификаты должны иметь имена вида <hash>.0 или иметь символичесткие ссылки такого вида, где <hash> - хэшированное имя субъекта сертификации);
• - CAfile <имя_файла> — файл с доверенными сертификатами (может содержать несколько сертификатов);
• - untrusted <имя_файла> — файл с недоверенными сертификатами (может содержать несколько сертификатов);
• - verbose — повысить уровень подробности вывода диагностических сообщений;
• - crl_check — выполнить проверку конечного сертификата по CRL (ссылка на CRL берется из сертификата или передается с помощью ключа -CRLfile);
• - crl_check_all — выполнить проверку всей цепочки сертификатов по CRL (ссылка на CRL берется из сертификата или передается с помощью ключа -CRLfile);
• <имя_файла> — сертификат или сертификаты, которые надо валидировать (должны указываться последними).
Примеры:
• Проверить сертификат на подлинность:
$ openssl verify -CAfile cacert.pem cert.pem
• Проверить сертификат на подлинность и через список отзыва:
$ openssl verify -CAfile cacert.pem -CRLfile crl.pem cert.pem
Практическая чась
Для реализации электронной цифровой подписи используется утилита Open SSl.
1. Формирование самоподписного сертификата
Openssl> req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.key
Здесь:
- cert.pem — сертификат, содержащий открытый ключ и информацию о том, кому выдан;
- cert.key — закрытый ключ, предназначенный для создания подписей или расшифровки.
2. Далее необходимо ответить на вопросы:
3. Проверим наличие в папке lab созданного сертификата cert.pem, и закрытого ключа cert.key
4. Выполним проверку сертификата:
openssl > verify c:\lab\cert.pem
5. Для вывода подробной информации о сертификате поступим так
openssl >x509 -in c:\lab\cert.pem -noout –text
В выводе и открытый ключ, и подпись сертификата и информация о владельце и сроки использования.
6. Генерация сертификата:
Openssl> req -new -x509 -days 10 -nodes -out c:\lab\cert.pem -keyout c:\lab\cert.key
7. Создание электронной подписи файла. Сначала создаем секретный ключ
Openssl> dgst -sha1 -sign c:\lab\cert.key -out c:\lab\sign.cr c:\lab\dok.txt
Здесь:
- sign cert.key - указываем закрытый ключ,
- filename - подписываемый файл,
- out sign.cr - указываем файл, в который сохранится подпись,
- sha1 - метод хэширования содержимого файла.
Подписать можно лишь очень ограниченный объём информации, поэтому, как правило хэш-сумму файла. То есть сначала создаётся SHA1-хэш файла.
В результате создаётся файл подписи длинной sign.cr 120 байт.
8. Проверка электронной подписи файла. Для начала нам надо преобразовать сертификат, с помощью которого мы будем проверять подпись в открытый ключ
Openssl> x509 -pubkey -noout -in c:\lab\cert.pem > c:\lab\pubkey.pem
При использовании вместо публичного ключа сертификата мы получим сообщение unable to load key file, так что преобразование - операция обязательная.
9. Затем, с помощью этого ключа, произведём проверку подписи:
Openssl> rsautl -verify -certin -inkey cert.pem -out filename.hash -in sign.cr
Если подпись верна, то получим:
Verified O