Создание собственного сертификата полномочий
Считается, что SSL-сертификаты обычно используются для защиты соединений по протоколу HTTP. Однако они полезны также как средство проверки достоверности и как средство начального обмена ключами для множества других служб, которым требуется шифрование, таких как POP и ШАР, SMTP, IPsec и, конечно же, SSL-каналы. Для самого эффективного использования SSL необходимо правильно управлять собственными сертификатами.
Если SSL-клиент хочет проверить подлинность SSL-сервера, сертификат, используемый сервером, должен быть подписан сертификатом полномочий (Certificate Authority, СА), который уже подтвержден клиентом. Существуют хорошо известные СА (такие, как Thawte и VeriSign), которые при проверке полномочий играют роль официальной, доверительной третьей стороны. Они участвуют в подписании SSL-сертификатов, которые используются на сайтах, содержащих важнейшую информацию (номера учетных записей или пароли). Если SSL-сертификат сайта подписан заслуживающим доверие «авторитетным источником», то, по-видимому, существует возможность проверить достоверность сервера, предоставив мандат этого сертификата. Однако самоподписанных (self-signed) сертификатов обычно достаточно для получения всех преимуществ обеспечения безопасности, предоставляемой SSL, за исключением приложений электронной коммерции. Но даже самоподписанный сертификат должен быть подписан «авторитетным источником», который признается клиентом.
OpenSSL (бесплатная реализация SSL) прекрасно подходит для генерации всего, что необходимо для выпуска собственного СА Утилита CApl значительно упрощает этот процесс.
В представленных далее примерах то, что выделено жирным шрифтом, вы должны вводить сами. При необходимости также необходимо вводить пароль (набор на экране не дублируется). Для учреждения нового СА-сертификата сначала измените на mjsc/ каталог, в который установлен OpenSSL (/System/Library/OpenSSL/ под OpenBSD; /usr/ssl/ или /usr/local/ssl/ на большинстве Linux-систем). После этого воспользуйтесь следующими командами:
$./CA.pl -newcа
СА certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key. Открытый ключ для нового СА содержится в файле cacert.pem, а закрытый ключ — в private/cakey.pem. Теперь частный ключ можно использовать для подписи других SSL-сертификатов.
По умолчанию CApl создает ключи со сроком годности 1 год. Для изменения этого поведения отредактируйте CApl и измените строку
$DAYS="-days 365":
Кроме того, можно вовсе отказаться от использования CApl и сгенерировать частный и публичный ключи вручную с помощью команды
$ openssl req -new-х509 -keyout cakeypem -out \ cakeypem -days 3550
Эта команда создаст пару ключей со сроком годности 10 лет, который также можно изменить с помощью ключа -days. Кроме того, вы могли бы изменить разрешение частного ключа на 600, для того чтобы его никто не смог прочитать. До сих пор мы занимались лишь созданием СА Для действительного создания ключей, которые можно использовать в службах, необходимо создать запрос на подпись сертификата и ключ. Опять же, это можно сделать с помощью CApl. Сначала создадим запрос на подпись сертификата:
$ ./CA.pl -newreq-nodes
Generating а 1024 bit RSA private key Теперь таким же образом вы можете устанавливать ключи для каждого сервера, который должен предоставлять SSL-защищенную службу. Это проще сделать, если выделить отдельную рабочую станцию для обслуживания СА и всех файлов, связанных с ним. Не забудьте распространить свой СА-сертификат во все программы, к которым требуется доверие.