Установка SSL-сертификата Let's Encript для кириллического домена на Apache
Процесс установки описан здесь Установка SSL Lets Encript из командной строки на Nginx
Содержание
- 1 Замечания
- 2 Установка
- 2.1 Создаем SSL сертификат для HTTPS протокола на сайт
- 2.2 Файлы SSL сертификата
- 2.3 Настройка HTTPS (SSL/TLS) в Apache
- 2.4 Перенаправление всех запросов с HTTP на HTTPS
- 2.5 Внесите исправление в файл robors.txt (если Вы его используете)
- 2.6 Проверка настройки https
- 2.7 Настройка автоматического обновления SSL-сертификатов с помощью планировщика cron
- 2.8 Обновление SSL-сертификата в ручную
- 2.9 Дополнительно
- 2.10 Плюсы и минусы данного способа создания сертификата
- 3 См. также
- 4 Ссылки
Замечания
- на 25.03.2017 Let's Encript поддерживает кириллические домены
- название домена надо вводить Пуникодом
- почту админа (требуется в процессе регистрации) надо указывать на латинском домене например admsite@yandex.ru, почта вида admin@ИмяДомена.рф пока не принимается.
- имя сайта пуникодом необходимо будет добавить
- Добавлять в SSLсертификат домен www.ИмяДомена.рф не стоит, имеет смысл сделать перенаправление на ИмяДомена.рф
Установка
Устанавливаем клиент Let’s Encrypt на сервер
Подключаемся к серверу по SSH. И переходим, например, в домашнюю директорию:
cd /home/
В нее мы установим клиент Let’s Encrypt. Для этого нам понадобится git, если у вас на сервере уже установлен git, то просто выполните следующие команды:
sudo git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
Если у вас не установлен git, то либо установите его следующей командой:
sudo apt-get install git
Либо просто распакуйте zip архив из репозитория GitHub:
wget https://github.com/letsencrypt/letsencrypt/archive/master.zip unzip master.zip mv letsencrypt-master letsencrypt cd letsencrypt
Устанавливаем скачанный клиент letsencrypt, для чего запускаем установочный скрипт:
./letsencrypt-auto --help
После установки клиента letsencrypt, и сопутствующего ПО, в конце появится страница с описанием справки по клиенту letsencrypt.
Все, клиент Let’s Encrypt установлен.
Создаем SSL сертификат для HTTPS протокола на сайт
Перейдем к созданию сертификата Let’s Encrypt. Для этого сначала необходимо остановить веб-сервер Apache:
sudo service apache2 stop
и запустить команду создания SSL сертификата, не забудьте поменять доменное имя site.com на свое.
В процессе создания сертификата, вам предложат ввести электропочту админа (кириллические домены почты пока не поддерживаются так что придётся ввести почту на яндексе), для важных сообщений и для восстановления ключа при необходимости. Далее нужно будет согласиться с лицензионным соглашением.
./letsencrypt-auto certonly --standalone -d site.com -d www.site.com
Для кириллического домена его имя необходимо указать в пуникоде, например так (для сайт.рф -> xn--80aswg.xn--p1ai ):
./letsencrypt-auto certonly --standalone -d xn--80aswg.xn--p1ai -d www.xn--80aswg.xn--p1ai
или если без под домена www:
./letsencrypt-auto certonly --standalone -d xn--80aswg.xn--p1ai
В случае успешного создания сертификата для HTTPS протокола вы соответствующее сообщение.
Созданный SSL сертификат и вся цепочка сохранится по следующему пути:
/etc/letsencrypt/live/site.com/
или для кириллического домена :
/etc/letsencrypt/live/xn--80aswg.xn--p1ai/
Файлы SSL сертификата
В /etc/letsencrypt/live/site.com/ будут следующие файлы:
- privkey.pem - приватный ключ для сертификата. В Apache он используется в директиве SSLCertificateKeyFile. В Nginx используется в директиве ssl_certificate_key.
- cert.pem - сертификат сервера. Его требует директива Apache SSLCertificateFile.
- chain.pem - связка всех сертификатов, которые обслуживаются браузером, за исключением cert.pem. 'Используется [[Apache[[ SSLCertificateChainFile.
- fullchain.pem - вся связка сертификатов (объединение chain.pem и cert.pem). Используется в Nginx для ssl_certificate.
Вот мы и получили сертификат. Не забудьте запустить Apache:
sudo service apache2 start
Настройка HTTPS (SSL/TLS) в Apache
Откройте файл конфигурации Apache для сайта (обычно это: /etc/apache2/sites-available/ИмяCайта-ssl.conf или /etc/apache2/vhosts/userName/ ) и добавьте следующие строки: , если его нет скопируйте из /etc/apache2/sites-available/ИмяCайта.conf
Добавте в него строки:
SSLEngine on # Включаем SSL SSLCertificateFile /etc/letsencrypt/live/devreadwrite.com/cert.pem # Путь к файлу сертификата сервера SSLCertificateKeyFile /etc/letsencrypt/live/devreadwrite.com/privkey.pem # Путь к файлу приватного ключа
Менять расположение файлов не рекомендуется т.к. через 3 месяца их придётся обновлять скриптом,
В итоге получится что-то вроде:
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin #... webmaster@localhost DocumentRoot #... /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/devreadwrite.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/devreadwrite.com/privkey.pem #... </VirtualHost> </IfModule>
Перезапускаем Apache:
service apache2 restart
Перенаправление всех запросов с HTTP на HTTPS
Стандартными средствами Apache 2.4
В файл
/etc/apache2/sites-available/ИмяCайта.conf
Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Сделаем это с помощью mod_alias. Если он не включён — включаем:
sudo a2enmod alias sudo service apache2 restart
Затем изменяем файл /etc/apache2/sites-enabled/000-default.conf, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл добавляем директиву
Redirect / https://example.com/
- в папке etc/apache2/avaible-sites/имя-сайта.conf - в котором сделано перенаправление (редирект) указать https://тхаб.рф/wiki/ЗаглавнаяСтраница, а не просто https://тхаб.рф/ - это позволит избежать двойного перенаправления проверить можно на сайтах которые измеряют скорость сайта.
При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.
Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу.
sudo service apache2 restart
- в файле robot.txt - исправить http на https
Если Вы используете .htaccess
Использовать файл - .htaccess не рекомендуется на больших сайтах т.к. он замедляет доступ к сайту из за того что каждый раз ищет в папке файл .htaccess. Но для сайтов с небольшой посещаемостью и вннутри корпоративных сайтов это не критично.
301 редирект с протокола http на https в Apache
Добавьте следующий код в файл .htaccess вашего сайта:
RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Внесите исправление в файл robors.txt (если Вы его используете)
Директива Host должна содержать:
- Указание на протокол HTTPS, если зеркало доступно только по защищенному каналу (Host: https://myhost.ru).
- если сайт зарегистрирован в {{яндекс вебмастер]] то необходимо добавить ещё такой же сайт но с указанием протокола https? например к сайту http://сайт.рф добавить https://сайт.рф .
Проверка настройки https
- проверьте доступность вашего сайта по https
- проверьте перенаправление на https://сайт.рф при попытке набрать http://сайт.рф
- проверьте ваш сайт на проверка SSL сертификатов домена, поддерживает кириллические домены
- проверьте ваш сайт на проверка SSL сертификатов домена, кириллические домены д.б. в пуникоде
Настройка автоматического обновления SSL-сертификатов с помощью планировщика cron
Как продлить сертификат? Сертификат выдается на 3 месяца, поэтому за несколько дней до окончания его необходимо продлить.
Для продления сертификата необходимо выполнить команду:
./letsencrypt-auto renew
Эту команду вы можете добавить в крон таб, для автоматического продления SSL сертификата.
Обновление SSL-сертификата в ручную
Сначала обновите всё ПО и получите последнюю версию letsencritp
sudo apt-get update sudo apt-get upgrade
Из папки куда был установлен letsencript (обычно папка Home/ИмяПользователя/letsencript ) необходимо выполнит скрипт
./letsencrypt-auto --renew-by-default
При обновлении сертификатов спросит:
- о количестве доменов, (если 1 домен то необходимо нажать enter)
- о необходимости
- 1. использовать для сайта возможность доступа по http и https
- 2. использовать для сайта только https и перенаправлять http на https необходимо выбрать вариант 1 или 2
Проверьте доступность сайта и срок действия нового сертификата.
Дополнительно
Для того чтобы получить зеленый замочек в адресной строке, который будет указывать пользователю что сайт правильно работает по протоколу HTTPS, необходимо все пути к подключаемым файлам (картинкам, css, js, ...) поменять с http на https. Так же можно вместо http или https поставить два слеша (//). Например:
<link rel="stylesheet" type="text/css" href="http://devreadwrite.com/style.css" />
заменить на:
<link rel="stylesheet" type="text/css" href="//devreadwrite.com/style.css" />
В таком случае файл будет получен по тому же протаколу в каком был запрошен сайт, в нашем случае https. Или же указать протокол явно.
<link rel="stylesheet" type="text/css" href="https://devreadwrite.com/style.css" />
По такому же принципу можно делать и ссылке на сайте.
Плюсы и минусы данного способа создания сертификата
Один и самый большой плюс данного способа - это создание сертификата без танцев с бубном. Существует множество других способов, но этот единственный, который заработал сразу.
Минус данного способа создания SSL сертификата заключается в том, что для создания сертификата необходимо остановит Nginx, следовательно сайты на Nginx во время создания сертификата не будут работать, это примерно 5-10 секунд (по крайней мере на моем сервере).
См. также
- Бесплатный SSL-сертификат, сравнение, как получить, установить
- Установка SSL-сертификата Let's Encript для кириллического домена на Nginx
- Создание самоподписанного SSL-сертификата для настройки HTTPS на Apache 2.4 на UBUNTU 14.04 debian 8 и astra linux
Ссылки
- проверка SSL сертификатов домена, поддерживает кириллические домены
- проверка SSL сертификатов домена, кириллические домены д.б. в пуникоде
Яндекс | Картинки | Видео | Карты | Карты ОСМ | Спутник | Гугл | Вольфрам-Альфа | РуВики | EnWiki