SSL-сертификаты применяются для обеспечения безопасного соединения и передачи данных в зашифрованном виде.
Сертификаты выдаются сертификационными центрами и представляют собой файл сертификата, выпущенного для определенного доменного имени, и приватного ключа.
Также необходимы промежуточные сертификаты в случае если файлы, упомянутые ранее, были сгенерированы не корневым центром сертификации.
Также возможно использование сертификатов, сгенерированных самостоятельно на Linux сервере. Однако, браузер пользователя при доступе к сайту в этом случае будет выдавать предупреждение о недоверенном сертификате.
SSL сертификаты чаще всего устанавливаются на веб- и почтовые сервера. В рамках данного материала будет рассмотрена установка сертификата на веб-сервер Apache для обеспечения возможности работы сайта по защищенному протоколу https
Как установить ssl сертификат на сервер Apache:
1. Чтобы установить на сервер сертификат необходимо подключиться к нему по протоколу SSH от имени пользователя root;
2. Файлы сертификатов могут размещаться в любом каталоге, часто их размещают в /etc/apache2/ssl.
Переходим в /etc/apache2 и создаем директорию
cd /etc/apache2
mkdir ssl
3.Создаем файлы сертификата, приватного ключа и промежуточного сертификата и помещаем в них содержимое аналогичных файлов, полученных от центра сертификации (или сгенерированных на сервере)
mcedit /etc/apache2/ssl/example.com.crt
Содержимое сертификата выглядит примерно следующим образом:
——BEGIN CERTIFICATE——
MIIFEDCCA/igAwIBAgISA+1wB7/BBdk7NHpvkfWRpapqMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNzAxMjkwNjEwMDBaFw0x
NzA0MjkwNjEwMDBaMCExHzAdBgNVBAMTFnJlbW90ZS10ZWNoLXN1cHBvcnQucnUw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQChoT+eOaGZXNtkoPLe6BNJ
d2gQqeTP1n8n2GRcJE7gKgduglfs1YfvE3CtoMYEm6veKKvVKE8AGox0USUPuM8S
——END CERTIFICATE——
SHIFT+INS чтобы вставить содержимое
F2 чтобы сохранить
Выходим нажимая ESC
Аналогичным образом создаем файл приватного ключа
mcedit /etc/apache2/ssl/example.com.key
Пример содержимого файла:
——BEGIN PRIVATE KEY——
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQChoT+eOaGZXNtk
oPLe6BNJd2gQqeTP1n8n2GRcJE7gKgduglfs1YfvE3CtoMYEm6veKKvVKE8AGox0
USUPuM8SRDeo4kJ7tAaQC1Ss8B6Dj57EKTJ+Jw+m+SzJEyfs3inAmrwKhR1KjRUe
SzsEgsralTZSK1uvoxPaKTsqPshs5oK3ZeTwzIR+keHbQUkxNyhKEM4j+dOFrykb
NLkJDABDzknmjodTr6fEgA5D99AAj/aWxaaOch8NxLQS60EasgdGFhIBZ/xACNdM
zIP3mn5WValj5yBOeX61f2qy0jy8RcwHMJbiA3IEw6oVVi+iTO6kgHrwhULCWJ8T
——END PRIVATE KEY——
Добавляем промежуточный сертификат, подтверждающий корректность цепочки
mcedit /etc/apache2/ssl/intermediate.crt
Пример промежуточного сертификата:
——BEGIN CERTIFICATE——
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
——END CERTIFICATE——
4. Что того чтобы работа веб-сервера по защищенному соединению необходимо, что был включен модуль apache2 SSL
Просмотреть включен ли модуль можно выполнив следующую команду:
apache2ctl -M | grep ssl
Если вывод не пустой — модуль активирован. Если в выводе ничего нет включаем модуль:
a2enmod ssl
После выполнения команды появляется сообщение «Enabling module ssl».
5. Переходим в каталог, в котором размещаются конфигурационные файлы сайтов — cd /etc/apache2/sites-available и находим конфигурационный файл сайта, подключение к которому по https настраиваем — в данном случае — example.com.conf
6. Создаем копию конфигурационного файла сайта и вносим в него коррективы
cp example.com.conf ssl-example.com.conf
6.1 В строке VirtualHost указываем порт по которому будет осуществляться подключение при работе по https — меняем 80 (значение для http) на 443
6.2 В качестве ServerName указываем имя сайта example.com
6.3 Приводим файл к следующему виду, указывая в нем полные пути к сертификату, приватному ключу и сертификату промежуточному SSLCertificateFile SSLCertificateKeyFile и SSLCACertificateFile
ServerAdmin [email protected]
ServerSignature On
ServerName example.com
AddDefaultCharset utf-8
CustomLog /var/log/apache2/logs/example.com/access.log combined
LogLevel error
SuexecUserGroup user user
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/example.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/example.com.key
SSLCACertificateFile /etc/apache2/ssl/intermediate.crt
SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2 SSLCompression off
SSLHonorCipherOrder on
DocumentRoot «/home/admin/example.com/www/»
……
7. Активируем сайт:
a2ensite ssl-example.com.conf
Фактически при выполнении команды создается символьная ссылка /etc/apache2/sites-availible/ssl-example.com.conf /etc/apache2/sites-enabled/
8. Перезапускаем веб-сервер для того чтобы изменения вступили в силу:
service apache2 restart
или (если сервис работает под runit)
sv t apache2
9. Проверяем статус
service apache2 status
или
sv s apache2
Если никаких ошибок не наблюдается — можно проверять доступность сайта по https. Также следует проверить корректность установки сертификата при помощи одного из онлайн-сервисов, предоставляющих подобную возможность.
На этом с вопросом о том, как установить SSL сертификат на сервер все.
Читайте также про установку для Nginx