Установка SSL от Let’s Encrypt на сервер (без панели)
Сертификаты — важный инструмент безопасности. Сертификат обеспечивает шифрование конфиденциальных данных пользователей (например пароли, банковские данные). Проекты, которые только набирают обороты, тоже нуждаются в защите, но для создателя в таком случае нецелесообразно сразу приобретать лучшую криптографическую защиту. Let’s Encrypt — решение, подходящее на старте.
Let’s Encrypt — это центр сертификации, который предоставляет бесплатные криптографические сертификаты X.509.
Certbot
Подключитесь к серверу через SSH. Установите certbot.
Вместо значений с * необходимо поставить свои (доменные имена).
После запуска, появится сообщение:
Please deploy a DNS TXT record under the name _acme-challenge.lamp.fvds.ru with the following value:
RYHdWpSmMuVjdJFZT9JGBs7zuQOFgN78f1Azt1fwNcc Before continuing, verify the record is deployed.
Необходимо создать новую запись TXT для имени домена в DNS-реестре.
После того, как вы создали запись, возвращайтесь в терминал и нажмите «Enter» для того, чтобы продолжить инициализацию. Certbot запросит создание второй TXT записи. Чтобы её создать, повторите действия, приведенные ранее.
Установка SSL-сертификата на домен
После получения необходимых файлов и сертификата, необходимо встроить этот сертификат на сервер, чтобы потом им подписать ваше доменное имя. Данный материал описывает установку сертификата с помощью менеджера ISPmanager, а также установку напрямую, не используя утилиты.
Использование ISPmanager 6
Авторизируйтесь в качестве пользователя, который владеет необходимым доменом. Чтобы это сделать, войдите в систему с правами суперпользователя (root), после найдите в меню пункт «Пользователи«, выберите «Войти под пользователем».
Важно: вам необходимо подключить возможность использования SSL. В пункте «Пользователи», в настройках определенного пользователя найдите «Может использовать SSL», отметьте этот пункт.
В подменю «SSL-сертификаты« — «Добавить сертификат».
Тип сертификата — существующий.
Параметры:
Имя сертификата — имя формируется в зависимости от информации, которая содержится в сертификате + «_customX» Если у ваша версия панели < 6.19, то вам необходимо вручную установить имя сертификата. SSL-Сертификат — поле, для загрузки файла .crt. Ключ сертификата — содержимое приватного ключа (файл .key). Также вам необходимо представить в панель файл (.ca/.ctrca). Это цепочка сертификатов (сертификат, которым подписан ваш исходный). Содержимое сертификатов просто скопируйте из файлов и вставьте в подходящие поля.
Например: цепочка сертификатов от GlobalSign
Вы получаете архив с файлами (файл .p7b сертификат и цепочка сертификата, файл с именем домена + открытый ключ + сертификат, корневой ключ цепочки сертификата, промежуточный ключ .crt).
Чтобы создать цепочки сертификата поместите в один файл .txt корневой ключ сертификата, после за ним, начиная с новой строки, промежуточный ключ и установите для него название GlobalSign.ca. Откройте файлы с ключами цепочки через любой текстовый редактор. Скопируйте содержимое, обязательно проверьте целостность скопированного кода.
Когда вы добавили сертификат, переходите на страницу «Сайты», запустите сервер. Вы увидите установленный сертификат. Но если настройки сайта будут меняться, то файлы конфигурации будут перезаписаны автоматически.
Изменения в файлах, которые вы вносили руками, могут не сохраниться. В случае возникновения подобной ситуации вам нужно перейти в /var/www/httpd-cert/ИМЯ_ПОЛЬЗОВАТЕЛЯ/ИМЯ_СЕРТИФИКАТА и повторно внести нужные изменения.
domain.com — доменное имя 10.0.0.1 — IP, который принадлежит домену путь — /path/to/domain.crt (сертификат) /path/to/domain.key — ключ сервера (путь)
Цепочка сертификата добавляется в файл с самим сертификатом.
После того, как вы изменили файл конфигурации, проверьте наличие ошибок в синтаксисе, а также ваши вставленные данные.
nginx -t — проверка конфигурации
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Если вы увидели подобный вывод, то SSL настроен корректно
systemctl restart nginx — перезапуск сервера
SSL-сертификаты (несколько) на едином IP
Браузер получит сертификат сервера, выставленный по умолчанию. Это не зависит от недостаточной настройки, так работает SSL. Чтобы разрешить работы нескольких сертификатов на одном IP, необходимо воспользоваться расширением SNI протокола TLS. Ссылка на документацию (https://tools.ietf.org/html/rfc6066). Данный модуль позволит установить SSL-handshake, во время которого сервер определит необходимый сертификат для использования. Большинство современных браузеров поддерживает это решение, но стоит обратить внимание также на версию библиотеки OpenSSL, она должна быть > 0.9.8f.
Процесс разделен на этапы, чтобы разобрать каждый этап отдельно.
Добавление сертификата на сервер
Чтобы вы смогли произвести установку сертификата на ваш сервер, перейдите в «Диспетчер серверов». Цепочка кнопок: Пуск — Администрирование — Диспетчер Серверов.
После как вы перешли в данное меню, найдите «Диспетчер служб IIS». В подменю выберите «Сертификаты сервера».
Ваши дальнейшие действия зависят от места, где был сгенерирован CSR.
Способ генерации CSR: самостоятельно с помощью личного кабинета
Если у вас уже есть ключ в вашем личном кабинете, то совершите экспорт этого ключа в формате .pfx файла. Для импорта ключа на сервер, найдите пункт «Действия» в меню, после выберите «Импортировать».
По прохождению данного этапа система оповестит вас о том, что сертификат стал доступным. Посмотреть подробную информацию можно в меню «Сертификаты сервера».
Подключение SSL-сертификата на домен
Перейдите в меню настройки конфигурации сайта. Найдите пункт «Подключения», выберите нужный сайт и нажмите на кнопку «Привязки».
В новом окне введите данные (кнопка «Добавить»). Образец следующий:
ТИП — https
ПОРТ — 443
Имя узла — имя домена
IP — IP сайта
После заполнения всех полей, нажмите «ОК». Перезагрузите сервер. Чтобы проверить успешность установки сертификата на веб-ресурс, достаточно взглянуть на URL. Если сайт стал доступен по https — установка прошла успешно.
После того как вы заказали сертификат и сгенерировали запрос на валидацию, нужно установить полученные пакеты .crt/.ca на сервер.
.ca - файл сертификатов .crt - файл, сконфигурированный для сайта
Загрузка необходимых файлов на сервер
В случае, если ваш сервер без графического интерфейса, то лучше перенести файлы, предварительно положив их в другой компьютер.
Переносим файлы с Linux/Mac OS
Опция SCP встроена в терминал системы. Положите .ca/.crt на локальный ПК. После, запустите терминал и найдите директорию, в которую сохранили файлы сертификатов. С помощью SCP перенесите файлы на сервер:
scp crt.crt ca.crt user@1.22.33.444:/etc/ssl
scp — копирование файлов
mydomain.ru_crt.crt — сертификат веб-сайте
mydomain.ru_ca.crt — сертификат Центра Авторизации
user — root или иное имя пользователя, установленное для подключения к серверу по SSH
1.22.33.444 — IP сервера
/etc/ssl — путь до папки, которую вы сохраните файлы
Запустите программу. Заполните строки валидными параметрами для соединения по SSH. Левая часть интерфейса инструмента — список файлов на локальном ПК, правая — список файлов, которые находятся на сервере. Перетащите сертификаты из левого поля в правое.
/etc/ssl/private.key — путь, для копирования файла ключа
Чтобы удалить старый ненужный файл конфигурации:
rm /home/root/private.key
Встраиваем SSL-сертификат в Apache
Вы получили заказанные сертификаты. Теперь вам необходимо подогнать настройки вашего сервера под интеграцию с SSL. Произведите подключение к веб-серверу по SSH с правами администратора и выполните следующее:
включите поддержку SSL на сервере — a2enmod ssl (Ubuntu)
yum install mod_ssl (Cent OS)
отредактируйте конфигурационный файл сервера, на котором будут развернуты сертификаты с помощью утилиты nano. Вставьте в файл следующий код:
/etc/ssl/mydomain.ru_ca.crt — путь до файла цепочки сертификатов Центра Сертификации (CA)
/etc/ssl/mydomain.ru_key.key — путь к закрытому ключу
Примечание: если вам необходимо, чтобы после инсталляции SSL ваш сайт был доступен только по защищенному протоколу https, измените его конфигурационный файл (добавьте код):
<strong><VirtualHost *:443></strong> # The ServerName directive sets the request scheme, hostname and port that# the server uses to identify itself. This is used when creating# redirection URLs. In the context of virtual hosts, the ServerName# specifies what hostname must appear in the request's Host: header to# match this virtual host. For the default virtual host (this file) this# value is not decisive as it is used as a last resort host regardless.# However, you must set it for any further virtual host explicitly.#ServerName www.mydomain.ru
ServerAdmin webmaster@localhostDocumentRoot /var/www/html# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,# error, crit, alert, emerg.# It is also possible to configure the loglevel for particular# modules, e.g.#LogLevel info ssl:warnErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined# For most configuration files from conf-available/, which are# enabled or disabled at a global level, it is possible to# include a line for only one particular virtual host. For example the# following line enables the CGI configuration for this host only# after it has been globally disabled with "a2disconf".#Include conf-available/serve-cgi-bin.conf<strong> SSLEngine onSSLCertificateFile /etc/ssl/mydomain.ru_crt.crtSSLCertificateChainFile /etc/ssl/mydomain.ru_ca.crtSSLCertificateKeyFile /etc/ssl/mydomain.ru_key.key</strong></VirtualHost>
При использовании HTTPS + HTTP
<strong><VirtualHost *:443></strong># The ServerName directive sets the request scheme, hostname and port that# the server uses to identify itself. This is used when creating# redirection URLs. In the context of virtual hosts, the ServerName# specifies what hostname must appear in the request's Host: header to# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.# However, you must set it for any further virtual host explicitly.#ServerName www.mydomain.ruServerAdmin webmaster@localhostDocumentRoot /var/www/html# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,# error, crit, alert, emerg.# It is also possible to configure the loglevel for particular# modules, e.g.#LogLevel info ssl:warnErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined# For most configuration files from conf-available/, which are# enabled or disabled at a global level, it is possible to# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only# after it has been globally disabled with "a2disconf".#Include conf-available/serve-cgi-bin.conf<strong> SSLEngine onSSLCertificateFile /etc/ssl/mydomain.ru_crt.crtSSLCertificateChainFile /etc/ssl/mydomain.ru_ca.crtSSLCertificateKeyFile /etc/ssl/mydomain.ru_key.key</strong></VirtualHost><VirtualHost *:80># The ServerName directive sets the request scheme, hostname and port that# the server uses to identify itself. This is used when creating# redirection URLs. In the context of virtual hosts, the ServerName# specifies what hostname must appear in the request's Host: header to# match this virtual host. For the default virtual host (this file) this# value is not decisive as it is used as a last resort host regardless.# However, you must set it for any further virtual host explicitly.#ServerName www.mydomain.ruServerAdmin webmaster@localhostDocumentRoot /var/www/html# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,# error, crit, alert, emerg.# It is also possible to configure the loglevel for particular# modules, e.g.#LogLevel info ssl:warnErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined# For most configuration files from conf-available/, which are# enabled or disabled at a global level, it is possible to# include a line for only one particular virtual host. For example the# following line enables the CGI configuration for this host only# after it has been globally disabled with "a2disconf".#Include conf-available/serve-cgi-bin.conf</VirtualHost>
После модификации файла конфигурации, вам необходимо перезагрузить APACHE:
В случае, если сервер использует межсетевой экран IPTABLES, вам необходимо разрешить внешнее подключение по https:
ufw allow 443/tcp
Проверка настроек
Для проверки валидности конфигурации откройте откройте ваш-веб сайт в браузере по протоколу HTTPS (например, https://mydomain.ru). Если сертификат установлен корректно, в адресной строке вашего браузера вы увидите иконку замка.
Валидация SSL-certificate
Низший уровень доверия — валидация домена. Для подтверждения владения доменом существует несколько сценариев.
Используя электронный почтовый ящик
Администратору доменного объекта нужно организовать почтовый ящик, на который поступит сообщение от центра сертификации. Возможные варианты имён:
В письме будет специальный код + ссылка для подтверждения. Перейдите по этой ссылке, скопируйте в соответствующую строку код.
DNS-записи
Вы сгенерировали подпись сертификата. У вас появится хеш, который необходимо использовать в настройках доменной зоны, а конкретно в записи CNAME:
_<MD5 hash value from CSR>.<доменное имя>. CNAME <SHA-256 hash value from CSR>.[<uniqueValue>.]comodoca.com.
Запись является валидной при условии, если после доменного имени стоит “.”. CNAME не требует указывать www при любых условиях. Мультидомены должны быть распределены по отдельным записям:
Вы получили хеш (код). Чтобы подтвердить подлинность, создайте файл .txt и разверните его в соответствии с шаблоном:
http://<mydomain>/.well-known/pki-validation/<хеш-значение MD5 в верхнем регистре>.txt
Файл должен содержать в себе 2 строки: на первой хэш-код, на второй comodoca.com
Обращаем внимание, что если вы используете редиректы — валидация не пройдёт успешно, поэтому перепроверьте заранее организованные каталоги, указанные в пути к файлу, наименование текстового файла должно быть указано в верхнем регистре, содержимая информация в файле не нуждается в разделении “.”, в конце “.” также не ставится.
, текстовый файл (последний элемент в пути) содержит
3d874ab7bacd5f2e3a9e1f2b3a3cc1631ae0cbd19f4da5aa1ab5bcca1aedf64 и comodoca.com
Валидация организации
В первую очередь, подтвердите домен. Центр Сертификации в частном порядке проводит проверку, в результате которой выясняется, существует ли организация или нет. Вы можете добавить организацию в список открытых реестров данных. Местонахождение организации подтверждают с помощью уставов, выданных гос. лицензий, копий выписок из банковских учреждений и тд. Также, вы можете подтвердить домен, если будет существовать нотариально заверенное письмо.
Валидация расширенного уровня
Вам будет необходимо заполнить специальную форму. После пройти валидацию организации, потом валидацию домена. Завершающим этапом является звонок из центра сертификации. Если все данные совпадают и являются валидными, сертификат будет выпущен и подписан.
Как выбрать SSL?
Что это такое?
SSL-сертификат — это цифровая подпись, которая обеспечивает шифрование данных между сайтом и пользователем по защищенному протоколу HTTPS. Все персональные данные, которые пользователь оставляет на защищенном сайте, в том числе пароли и данные банковских карт, надежно зашифрованы и недоступны посторонним. Браузеры распознают защищенные сайты автоматически и отображают рядом с их названием в адресной строке (URL) маленький замок зеленого или черного цвета.
Какой SSL выбрать?
Для выбора подходящего SSL сертификата необходимо понимать:
сколько доменов вы хотите защитить
необходима ли защита поддоменов
будет ли на сайте происходить оплата
необходимо ли наличие зеленой строки
Подбор SSL-сертификата по типу деятельности:
Если вам необходимо защитить лишь один домен, то самый простой и лёгкий в получении сертификат это Comodo PositiveSSL. Он поддерживает домены с www и без а также кириллические домены.
Если у вас есть оплата на сайте, то лучше использовать сертификат с проверкой организации, например, Comodo InstantSSL. Проверка организации как правило происходит около 5 дней, и довольно непростая. Все необходимые документы и этапы проверки описаны в нашей статье.
Для защиты домена с большим числом поддоменов обычно используют wildcard-сертификат, например, Comodo PositiveSSL Wildcard. Данный сертификат защищает основной указанный домен и следующие по уровню. Например, при заказе сертификата для домена example.com будут защищаться только домены вида: example.com, test1.example.com, test3.example.com. Домены вида mail.test.example.com в данном случае защищаться не будут.
Для одновременной защиты нескольких доменов удобно использовать мультидоменный сертификат, например, Comodo PositiveSSL Multi-Domain. С помощью всего лишь одного сертификата вы защитите разные доменные имена, например, example.com, test.org и mail.example.edu.
Если необходимо защитить неограниченное количество доменов и поддоменов, используйте сертификат Comodo PositiveSSL Multi-Domain Wildcard (2 SAN). Например, у вас будут защищены mail.example.com, news.example.com, mail.test.com, images.yest.com. Это уникальный сертификат, который поддерживает и SAN и Wildcard.
Если вам необходима самая высокая степень доверия со стороны конечных потребителей, используйте сертификат с зеленой строкой, например, Comodo Extended Validation SSL. Сертификаты с зеленой строкой имеют расширенную проверку, которая длится около 2 недель и включает в себя проверку организации и обратный звонок от сертифицирующего центра.