Самозаверенный сертификат: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Метка: добавление ссылки
Строка 65: Строка 65:


==Ссылки==
==Ссылки==
[http://www.inssl.com/self-signed-certificates.html Самоподписанные SSL сертификаты]<br />
* [http://www.inssl.com/self-signed-certificates.html Самоподписанные SSL сертификаты]<br />
[http://xgu.ru/wiki/OpenSSL#.D0.9A.D0.B0.D0.BA_.D1.81.D0.B3.D0.B5.D0.BD.D0.B5.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D1.82.D1.8C_.D1.81.D0.B0.D0.BC.D0.BE.D0.BF.D0.BE.D0.B4.D0.BF.D0.B8.D1.81.D0.BD.D0.BE.D0.B9_.D1.81.D0.B5.D1.80.D1.82.D0.B8.D1.84.D0.B8.D0.BA.D0.B0.D1.82.3F Руководство по OpenSSL на XGU.ru]<br />
* [http://xgu.ru/wiki/OpenSSL#.D0.9A.D0.B0.D0.BA_.D1.81.D0.B3.D0.B5.D0.BD.D0.B5.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D1.82.D1.8C_.D1.81.D0.B0.D0.BC.D0.BE.D0.BF.D0.BE.D0.B4.D0.BF.D0.B8.D1.81.D0.BD.D0.BE.D0.B9_.D1.81.D0.B5.D1.80.D1.82.D0.B8.D1.84.D0.B8.D0.BA.D0.B0.D1.82.3F Руководство по OpenSSL на XGU.ru]<br />
* [http://pyatilistnik.org/ssl-chto-eto-takoe-printsipyi-shifrovaniya-sertifikatom/ Самоподписанный Ssl]
[http://www.sysadmins.lv/PermaLink,guid,b2960f54-69de-41ee-91bd-36f122a68771.aspx Самоподписанные сертификаты и атака Man-in-The-Middle]
* [http://www.sysadmins.lv/PermaLink,guid,b2960f54-69de-41ee-91bd-36f122a68771.aspx Самоподписанные сертификаты и атака Man-in-The-Middle]





Версия от 19:50, 5 июня 2017

Самозаверенный сертификат — специальный тип сертификата, подписанный самим его субъектом. Технически данный тип ничем не отличается от сертификата, заверенного подписью удостоверяющего центра (УЦ), только вместо передачи на подпись в УЦ пользователь создаёт свою собственную сигнатуру. Проще говоря, создатель сертификата сам является в данном случае УЦ. Все корневые сертификаты доверенных УЦ являются самозаверенными.

Ненадёжность

Поскольку самозаверенный сертификат не заверяется удостоверяющим центром, в соответствии с п. 3.3 RFC 2459, такой сертификат невозможно отозвать.
Теоретически, это позволяет осуществить Man-in-The-Middle-атаку, при которой злоумышленник может перехватить сертификат узла-инициатора шифрованного соединения и вместо него отправить узлу назначения свой поддельный, с помощью которого передаваемые данные можно будет дешифровать
При этом, подобным образом скомпрометированный сертификат нельзя будет отозвать, так как он не заверен УЦ.

Создание

Создадим файлы cert.key и cert.crt, в которых будут храниться секретный ключ и открытый сертификат, основанный на нём. Сертификат будет действителен в течение Х дней; (ключ с опцией -nodes будет нешифрованным).

openssl req -x509 -nodes -days 2 -newkey rsa:2048 -keyout cert.key -out cert.crt

Х нужно заменить на нужное кол-во дней. После вызова команды надо будет ответить на вопросы о владельце и т.д. На вопрос “Common Name” нужно отвечать именем домена для которого планируется использовать этот сертификат. В результате выполнения команды у вас будет 2 файла: cert.key(с секретным ключом сервера) и cert.crt(с публичным ключом), которые уже можно использовать в конфигах серверов.

Например(файлы сертификата предварительно положены в каталог /etc/ssl/ ):

Nginx
server {
       listen   443;
       server_name  site.ru;

       ssl on;
       ssl_certificate         /etc/ssl/cert.crt;
       ssl_certificate_key     /etc/ssl/cert.key;

       location / {
           root /var/www/site.ru;
       }
}
Apache
NameVirtualHost *:443
<VirtualHost *:443>
        ServerName site.ru
        ServerAdmin admin@site.ru

        SSLEngine on
        SSLCertificateKeyFile /etc/ssl/cert.key
        SSLCertificateFile /etc/ssl/cert.crt
        DocumentRoot /var/www/site.ru/
        <Directory />
                Options -Indexes FollowSymLinks -MultiViews
                AllowOverride All
        </Directory>
        <Directory /var/www/site.ru>
                Options -Indexes FollowSymLinks -MultiViews
                AllowOverride All
                Order deny,allow
                allow from all
        </Directory>
    DirectoryIndex index.htm index.php    
</VirtualHost><tt>-subj</tt>:pre>
Можно автоматизировать ввод ответов с помощью опции <tt>-subj</tt>:<pre>
openssl req \
  -x509 -nodes -days 365 \
  '''-subj '/C=RU/..../CN=имя_домена' \'''
  -newkey rsa:2048 -keyout cert.key -out cert.crt

Ссылки