August 6, 2019

Самозаверенный сертификат

Примечание

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

  • Создадим файлы self.key и self.crt, в которых будут храниться секретный ключ и открытый сертификат, основанный на нём. Сертификат будет действителен в течение Х дней; (ключ с опцией -nodes будет нешифрованным).
openssl req -x509 -nodes -days X -newkey rsa:2048 -keyout self.key -out self.crt
  • Х нужно заменить на нужное кол-во дней. После вызова команды надо будет ответить на вопросы о владельце и т.д. На вопрос “Common Name” нужно отвечать именем домена, для которого планируется использовать этот сертификат. В результате выполнения команды у вас будет 2 файла: self.key (с секретным ключом сервера) и self.crt (с публичным ключом), которые уже можно использовать в конфигурациях серверов.

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

Nginx

server {
       listen   443;
       server_name  site.net;
       ssl on;
       ssl_certificate         /etc/ssl/self.crt;
       ssl_certificate_key     /etc/ssl/self.key;
       location / {
           root /var/www/site.net;
       }
}

Apache

NameVirtualHost *:443
<VirtualHost *:443>
        ServerName site.net
        ServerAdmin [email protected]
        SSLEngine on
        SSLCertificateKeyFile /etc/ssl/self.key
        SSLCertificateFile /etc/ssl/self.crt
        DocumentRoot /var/www/site.net/
        <Directory />
                Options -Indexes FollowSymLinks -MultiViews
                AllowOverride All
        </Directory>
        <Directory /var/www/site.net>
                Options -Indexes FollowSymLinks -MultiViews
                AllowOverride All
                Order deny,allow
                allow from all
        </Directory>
    DirectoryIndex index.htm index.php    
</VirtualHost>