Установка бесплатного подписанного SSL-сертификата на Apache

Требования

Для выполнения данного руководства необходимы следующие инструменты:

  1. Браузер Google Chrome
  2. Веб-сервер Apache, предварительно установленный на виртуальный выделенный сервер
  3. Доменное имя
  4. Доступ к одному из почтовых адресов:

postmaster@duable.co
hostmaster@duable.co
webmaster@duable.co

StartSSL.com предлагает вашему сайту абсолютно бесплатный заверенный SSL-сертификат (т.е., посещая ваш сайт, пользователи больше не увидят отпугивающий красный экран с сообщением “this site isn’t trusted”). Это отличная возможность сэкономить на покупке заверенного сертификата.

Для начала откройте сайт StartSSL.com и при помощи панели инструментов перейдите StartSSL Products →StartSSL™ Free. В верхней части страницы выберите Control Panel.

Примечание: Для выполнения руководства нужно использовать Google Chrome.

Выберите опцию Express Signup.

Укажите свои личные данные и нажмите кнопку continue. Вы получите электронное письмо с проверочным кодом. Скопируйте и вставьте в форму на странице StartSSL.

Ваш запрос на сертификат будет рассмотрен, после чего вы получите сообщение с новой информацией. Наберитесь терпения: этот процесс может занять около 6 часов.

Получив сообщение, используйте ссылку и новый код аутентификации (в нижней части письма), чтобы продолжить.

На данном этапе нужно создать закрытый ключ; существует 2 уровня сложности этого ключа: High и Medium. Выберите High.

Когда ключ будет готов, нажмите Install.

Chrome выведет всплывающее окно, сообщающее, что сертификат был успешно установлен.

Итак, теперь браузер авторизован при помощи нового сертификата, а это значит, что теперь вы имеете доступ к StartSSL AUTHENTICATION AREAS. На данном этапе нужно корректно отформатировать созданный сертификат, чтобы VPS мог использовать его. Нажмите на ссылку Control panel и выберите опцию Authenticate. Chrome выведет всплывающее окно, спрашивая, нужно ли пройти авторизацию, и покажет только что установленный сертификат. Войдите в панель управления при помощи этого сертификата.

Также нужно подтвердить доменное имя, так как без этого невозможно установить сертификат. В панели управления выберите Validations Wizard, а затем Type to Domain Name Validation. При этом будет запрошен адрес электронной почты, привязанный к этому домену (он выглядит примерно так: postmaster@yourdomain.com).

Проверьте указанный почтовый ящик. Вы должны получить еще одно проверочное письмо; как и ранее, скопируйте и вставьте код в форму на веб-сайте StartSSL.

Откройте вкладку Certificates Wizard и выберите Web Server SSL/TLS Certificate. Нажмите Continue и введите пароль, оставив остальные поля как есть.

На экране появится текстовое поле, которое содержит закрытый ключ. Скопируйте и вставьте его в текстовом редакторе, а затем сохраните его в файл с именем ssl.key.

Нажмите Continue, после чего браузер спросит, для какого домена нужно создать сертификат.

Укажите свой домен и переходите к следующему разделу.

При этом будет запрошен субдомен, к которому будет привязан сертификат. В большинстве случаев используется www; чтобы использовать другой поддомен, просто введите его в это поле вместо www.

StartSSL предоставит вам новый сертификат в текстовом поле, как это было с закрытым ключом.

Снова скопируйте и вставьте полученные данные в текстовый редактор и сохраните файл как ssl.crt.

ДЛя авторизации сайта понадобится ещё StartCom Root CA и Class 1 Intermediate Server CA от StartSSL.

Щёлкните в окне Save Certificate правой кнопкой и сохраните данные в два файла:

  • StartCom Root CA (PEM Encoded) (сохраните в ca.pem)
  • Class 1 Intermediate Server CA (сохраните в sub.class1.server.ca.pem).

В целях безопасности StartSSL шифрует закрытый ключ (файл ssl.key); но серверу необходима его незашифрованная версия. Чтобы расшифровать его в файл private.key, скопируйте его на сервер и используйте следующую команду:

openssl rsa -in ssl.key -out private.key

OpenSSL запросит пароль; введите пароль, который вы использовали на сайте StartSSL.

Итак, на данный момент у вас 5 файлов; проверьте, все ли они на месте:

  • ca.pem: Root-сертификат StartSSL;
  • private.key: незашифрованная версия закрытого ключа (этот файл нужно тщательно хранить от посторонних);
  • sub.class1.server.ca.pem: промежуточный сертификат StartSSL;
  • ssl.key: зашифрованная версия закрытого ключа;
  • ssl.crt: новый сертификат.

Файл ssl.key можно оставить. Остальные файлы нужно скопировать на сервер, если вы не сделали этого ранее:

scp {ca.pem,private.key,sub.class1.server.ca.pem,ssl.crt} YOURSERVER:~

Включение сертификата на Apache

Итак, сертификат готов к использованию; теперь нужно настроить веб-сервер Apache для использования нового сертификата SSL. Данный раздел продемонстрирует настройку Apache на сервере Ubuntu. Отредактируйте команды согласно вашему дистрибутиву.

Для начала нужно создать каталог для хранения ключей. Включите модуль SSL веб-сервера и перезапустите Apache:

sudo a2enmod ssl
sudo service apache2 restart
sudo mkdir -p /etc/apache2/ssl

Скопируйте ранее созданные файлы в каталог /etc/apache2/ssl на сервере.

sudo mkdir -p /etc/apache2/ssl
cp ~/{ca.pem,private.key,sub.class1.server.ca.pem,ssl.crt} /etc/apache2/ssl

Затем выполните:

ls /etc/apache2/ssl

Эта команда вернёт:

ca.pem
ssl.crt
private.key
sub.class1.server.ca.pem

Теперь откройте конфигурационный файл apache2. При использовании стандартных настроек введите:

nano /etc/apache2/sites-enabled/000-default

Этот файл имеет примерно такой вид:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

Скопируйте этот скрипт и внесите его под уже существующим кодом, а затем измените верхнюю строчку:

<VirtualHost *:80>

таким образом:

<VirtualHost *:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/apache2/ssl/ssl.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.key
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem

В результате должно получиться:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/apache2/ssl/ssl.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.key
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

Сохраните свой файл и перезапустите Apache:

sudo service apache2 restart

Затем проверьте логи Apache на наличие каких-либо ошибок с помощью этой команды:

cat /var/log/apache2/error.log

Если логи не сообщают об ошибках, попробуйте открыть свой сайт в браузере при помощи ссылки HTTPS (например, https://www.YOURSITE.com). При загрузке сайта возле ссылки появится символ зелёного замка. Кликните на него, и на экране появится информация о соединениях, cookies и правах сайта. Вкладка Connections должна показывать, что подлинность сайта подтверждена StartCom.

Готово! Теперь сайт надёжно защищён.

Примечание: При возникновении каких-либо проблем оставьте свой комментарий под статьёй, либо обратитесь к одному из нижеприведённых руководств:

Tags: , , , ,

Добавить комментарий