Этот метод может быть использован в интрасетях или в организациях, которые используют или планируют использовать собственный центр сертификации (СА - Certificate Agency). В этом случае местный сертификат СА должен быть установлен на все веб-навигаторы, которые будут соединяться с безопасным web-сервером.
Для использования этого способа необходимо создать:
локальный закритий/відктритий ключ СА;
сертификат СА;
репозиторий СА для новых ключей.
Для обеспечения надежности всей системы сертификации необходимо выполнить
следующие условия:
локальный СА должен быть создан на отдельном сервере, который не имеет соединения
с сетью;
операционная система должна давать доступ только авторизованному персоналу;
сервер СА должен быть под охраной.
Частный СА ключ - самый важный элемент всей системы - если он будет компрометируемый, то все другие сертификаты, подписанные этим СА также будут
компрометируемые.
Алгоритм создания сертификата содержит следующие шаги.
Шаг 1. Подготовить структуру каталога для нового СА:
set SSLDIR=c: \ca
mkdir%SSLDIR%
mkdir%SSLDIR%\certs
mkdir%SSLDIR%\crl
mkdir%SSLDIR%\newcerts
mkdir%SSLDIR%\private
mkdir%SSLDIR%\requests
Создать текстовый файл, например, index. txt, который будет содержать информацию о
созданных сертификатах.
Создать текстовый файл, например, serial, который содержит следующее значение
идентификатору сертификата в hex-формате:
echo 01 >%SSLDIR%\serial
можно создать *. bat файл с данными командами и запустить его.
Шаг 2. Создать основной файл настроек центра сертификации
Название файла, например, openssl. cnf. Пример содержания файла (оптимизировано для
использования с SSL веб-серверами):
# =================================================
# OpenSSL configuration file
# =================================================
RANDFILE = $ENV:: SSLDIR/. rnd
[ca]
default_ca = CA_default
[CA_default]
# Название каталога CA
dir = c: \ca
# Название каталога с сертификатами
сеrts = $dir/certs
# Название каталога с новыми сертификатами, название файла в виде ідентифікатор. pem
(01. pem, 02. pem)new_certs_dir = $dir/newcerts
# Название каталога с CRL-файлами (Certificate Revocation List - Список Аннулированных
Сертификатов)crl_dir = $dir/crl
# Название текстового файла, который будет содержать информацию о созданных
сертификатах
database = $dir/index. txt
# Название текстового файла с секретным ключом CA
private_key = $dir/private/ca. key
# Название текстового файла с сертификатом CA
сеrtificate = $dir/ca. crt
# Название текстового файла, который содержит следующее значение идентификатору
сертификата в hex-формате
serial = $dir/serial
crl = $dir/crl. pem
RANDFILE = $dir/private/. rand
# Период действия сертификата
default_days = 365
# Период обновления CRL-файлов
default_crl_days = 30
# Тип хеш-функции, что используется при установлении подписи
default_md = sha1
# Тип поведения системы при определении значений DN-атрибутов сертификата
preserve = no
# название секции с характеристиками переменных, которые входят к DN-атрибутам
сертификата
policy = policy_anything
name_opt = ca_default
cert_opt = ca_default
# Секция содержит значение переменных, которые входят к DN-атрибутам сертификата менно значение, что и атрибут CA - сертификата. Если значение переменной = 'supplied', то атрибут должен содержаться в сертификате. Если значение переменной = 'optional', то атрибут может содержаться в сертификате. Атрибуты, которые не представлены в секции, будут удалены, если значение переменной preserve = on или опция - preserveDN отсутствует в командной строке.
[policy_anything]
countryName = Karamanov. Bank
stateOrProvinceName = Alexey Karaamnov
localityName = kaa
organizationName = bank
organizationalUnitName = xxx
commonName = xxxx
emailAddress = onpu@i.ua
Шаг 3. Создать пару СА закрытый/открытый ключ и самоподписанный сертификат СА:
ореnssl req \
config $SSLDIR$/openssl. cnf - new - x509 - nodes - days 3652 - sha1 - newkey rsa: 1024 \
keyout $SSLDIR$/private/ca. key - out $SSLDIR$/ca. crt \
subj
'/C=UA/ST=OdessaRegion/L=Odessa/O=Karamanov. Bank /OU=bank /CN=www.karamanov. bank. od.ua'
Команда создает новый (-new) самоподписанный root-сертификат (-x509), который будет
подписан с использованием алгоритма SHA1 (-sha1). Закрытый (частный) ключ RSA будет иметь длину 1024 бит (-newkey rsa: 1024), не будет защищен парольной фразой (-nodes). Запрос на сертификат, что включает открытый ключ, будет содержаться в файле request. pem, а закрытый ключ будет создан в файле "server. key". Параметр "-subj" говорит о том, что сертификат создан для компании, которая расположена в Украине (C=UA), в одесском регионе (ST=OdessaRegion), название компании "ONPU" (O=ONPU), название службы "kaf_SPO" (OU=kaf_SPO), и полностью определенное доменное имя "www.spo. ospu. odessa.ua" #@:. Сертификат может использоваться 10 лет #@;
После выполнения команды будут созданы файлы:
файл ca. key с закрытым ключом центра сертификации;
файл ca. crt с сертификатом.
создали закрытый ключ:
создали сертификат:
Для создания сертификата необходимо выполнить следующие шаги:
Шаг 1. Создать пар закрытый/открытый ключ веб-сервера (файл web_server. key), и запрос на сертификат (файл web_request. pem), используя команды:
ореnssl req - new - sha1 - newkey rsa: 1024 - nodes - keyout web_server. key - out web_request. pem \
subj '/O=karamanov. bank /OU=web-server/CN= www.karamanov. bank. od.ua'
Шаг 2. Скопировать запрос на сертификат (файл web_request. pem) в директорию $SSLDIR/requests на узле центра сертификации.
Шаг 3. Подписать запрос на сертификат:
ореnssl ca - cert%SSLDIR%/server. crt - keyfile%SSLDIR%/server. key \
config%SSLDIR%/openssl. cnf - policy policy_anything \
noemailDN - out%SSLDIR%/requests/signed. pem \
infiles%SSLDIR%/requests/web request. Pem
В результате выполнения этих команд будет подписан сертификат (файл signed. pem), который будет находится в каталоге $SSLDIR/newcerts, и в файле $SSLDIR/signed. pem.
Для местных СА в случае компрометации сертификата строго рекомендуется аннулировать сертификат и информировать пользователей о том, что сертификат больше не действительный. Для аннулирования сертификата необходимо отыскать его серийный номер в файле $SSLDIR/index. txt.
V 031237770121C 01 unknown /O=alexey. karamanov/OU=web_server/CN=karamanov. bank. od.ua’
Видно, что каждая запись описывает сертификат. Серийный номер содержится в третьих полатях записи. Выбрав нужный серийный номер, например 01, выполняем следующие команды:
ореnssl ca - config $SSLDIR/openssl. cnf - revoke $SSLDIR/newcerts/01. pem
Для создания CRL-файла (Certificate Revocation List - Список Аннулированных Сертификатов), необходимо выполнить команды:
ореnssl ca - config $SSLDIR/openssl. cnf - gencrl - crlexts crl_ext - md sha1 - out $SSLDIR/crl. Pem
Этот файл должен быть опубликован на сайте центра сертификации. В процессе распространения CRL-файлов также рекомендуется использовать Online Certificate Status Protocol (OCSP).
Создание личного клиентского сертификата очень похоже на создание сертификата web - сервера. Единственное отличие заключается в том, что используются другие расширения X.509v3 (секция "ssl_client" с openssl. cnf), а формат хранения закрытого ключа и сертификата - PKCS#12
(также называется PFX). Действия, которые необходимо выполнить для создания клиентского сертификата:
Шаг 1. Создать предназначенный для пользователя пар закрытый/открытый ключ вместе с запросом на сертификат. Если выделенный сервер не используется для обслуживания сертификата, то на машине пользователя необходимо выполнить следующие команды:
ореnssl req - new - sha1 - newkey rsa: 1024 - nodes - keyout client. key \
out request. pem - subj '/O=bank /OU=karamanov. bank/CN=director
Шаг 2. Послать запрос на сертификат (request. pem) в сервер местного центра СА для подписи.
Шаг 3. Задача местного СА - проверить или правильно пользователь заполнил поля в запросе на сертификат.
Шаг 4. После верификации запрос на сертификат (request. pem) скопировать в каталог $SSLDIR/requests на сервере СА.
Шаг 5. Местный СА должен подписать сертификат, используя команды:
ореnssl ca \
plain-config $SSLDIR/openssl. cnf - policy policy_anything - еxtensions ssl_client \
plain-out $SSLDIR/requests/signed. pem - іnfiles $SSLDIR/requests/request. pem
Шаг 6. Отослать пользователю подписанный сертификат (signed. pem).
Шаг 7. По получении подписанного сертификата пользователю необходимо сберечь закрытый ключ вместе с сертификатом в формате PKCS#12, используя команды:
ореnssl pkcs12 - еxport - clcerts - іn signed. pem - іnkey client. key - out client. p12
1. Бабаш А.В., Гольев Ю.И., Ларин Д.А., Шанкин Г.П. О развитии криптографии в XIX веке // Защита информации. Конфидент. №5, 2003, с.90-96. (http://www.agentura.ru)2. Гольев Ю.И., Ларин Д.А., Тришин А.Е., Шанкин Г.П. Криптографическая деятельность в США XVIII-XIX веков. // Защита информации. Конфидент. №6, 2004, с.68-74.
3. Тейер Т., Липов М., Нельсон Э. Надежность программного обеспечения. - Пер. с англ. - М.: Мир, 1981.
4. Липаев В.В. Надежность программных средств. - М.: Синтег, 1998.
5. Кузнецов И.Н. Научные работы: методика подготовки и оформления. - Минск, 2000.
6. Понимание SQL. Мартин Грубер, Вильямс, 2003.