Видно приходит время повальной SSL сертификации сайтов. Компания, начатая Google в прошлом году, о включении безопасности сайта в факторы ранжирования, подходит к финальному этапу. С конца января нам обещают, и вы уже могли получать эти письма, что все сайта работающие по протоколу HTTP,будут помечены красном предупреждением о небезопасности. Предлагаю в этой статье познакомится с типами сертификатов безопасности SSL для сайта интернет-магазина.
Архив метки: SSL
Бесплатный SSL сертификат Let’s Encrypt протокола https Nginx
Краткая инструкция по настройке https с помощью SSL сертификата от Let’s Encrypt на ОС Ubuntu с веб-сервером Nginx. Сначала прочтите всё до конца, а потом выполняйте.
Если что-то не получится, обязательно задавайте вопросы в комментариях. Полная официальная инструкция на английском доступна на readthedocs.org.
После успешного перехода интернета на защищенный https протокол внешние ресурсы (например, js, тэги <img>) надо брать только по https, иначе замо́чек в адресной строке браузера не будет зелёным. Читать
Получаем сертификаты Let’s Encrypt для домена.
Сегодня в статье разберем установку SSL сертификата от Let’s Encrypt для домена, при помощи cerbot на UbuntuDebian системы.
Certbot – это клиент протокола ACME предназначенный для автоматического управления SSL-сертификатами от Let’s Encrypt, он позволяет полностью автоматизировать процесс получения и продления сертификата, а при использовании соответствующих плагинов даже может автоматически конфигурировать веб-сервер или иное, использующее сертификат приложение.
Дальнейшие инструкции будут предназначены для операционных систем Debian и Ubuntu, но многое будет справедливо и для иных дистрибутивов Linux.
Установка в Ubuntu/Debian
В новом выпуске Ubuntu/Debian все просто, отныне Certbot представлен в официальном списке пакетов и для его установки достаточно выполнить одну простую команду:
sudo apt install certbot
Подготовка к получению сертификатов
Для получения сертификата воспользуемся плагином webroot, который позволяет автоматически получать сертификаты используя уже установленный в системе веб-сервер. Если коротко, то вы указываете путь к корневой директории сайта, для которого получаете сертификат в файловой системе. Certbot создает там необходимую структуру папок и размещает необходимый для проверки файл.
В случае с одним доменом это не вызывает проблем, но если их много или вам требуется сертификат сразу на несколько доменов (основной домен и поддомены), корневые директории у которых отличаются, то у вас возникнут затруднения. Поэтому сам Let’s Encrypt рекомендует перейти в таком случае на единую точку подтверждения сертификатов. Сделать это несложно.
В доступной для веб-сервера директории создадим отдельный каталог, назовем его, letsencrypt, который затем мы будем использовать для всех обслуживаемых доменов и установим ее владельцем веб-сервер:
mkdir /var/www/letsencrypt
chown www-data:www-data /var/www/letsencrypt
Теперь нам нужно сделать так, чтобы любой запрос вида:
http://example.com/.well-known/acme-challenge
приводил к физическому размещению:
/var/www/letsencrypt/.well-known/acme-challenge
Это несложно, но для каждого из веб-серверов делается по-разному, ниже мы рассмотрим самые популярные из них.
Apache 2.x
Для подготовки к работе с Certbot добавьте в основной конфигурационный файл /etc/apache2/apache2.conf
следующую секцию:
Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
<Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
Options None
AllowOverride None
ForceType text/plain
Require all granted
RedirectMatch 404 "^(?!/.well-known/acme-challenge/[w-]{43}$)"
</Directory>
Для устаревшей версии Apache 2.2 данный блок должен выглядеть следующим образом:
Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
<Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
Options None
AllowOverride None
ForceType text/plain
Order allow,deny
Allow from all
RedirectMatch 404 "^(?!/.well-known/acme-challenge/[w-]{43}$)"
</Directory>
Данная секция создает для любого запроса к /.well-known/acme-challenge
алиас (псевдоним), указывающий на физическую директорию /var/www/letsencrypt/.well-known/acme-challenge
, а ее расположение в основном конфигурационном файле позволит распространить действие директив для любого обслуживаемого домена. Остальные параметры задают необходимые параметры безопасности.
Nginx
Nginx предполагает несколько иной подход к настройке. Для каждого виртуального хоста в секцию server следует добавить блок:
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt;
}
location = /.well-known/acme-challenge/ {
return 404;
}
Я также рекомендуем вынести указанный блок в отдельный шаблон, например, /etc/nginx/letsencrypt.conf
и впоследствии подключать в конфигурацию виртуального хоста именно его и в общих чертах это должно выглядеть так:
server {
server_name example.com
..
include /etc/nginx/letsencrypt.conf;
}
Данный подход является хорошей практикой, так как в случае внесения каких-либо изменений их придется делать только в одном месте, вне зависимости от числа обслуживаемых виртуальных хостов.
Lighttpd
В русскоязычной среде данный веб-сервер недостаточно распространен, так как пользователи отдают предпочтение Nginx, но в мировом масштабе он входит в число наиболее популярных веб-серверов. Если вы используете именно его, то откройте основной конфигурационный файл /etc/lighttpd/lighttpd.conf
и убедитесь, что в секции server.modules присутствует значение mod_alias, в противном случае его необходимо добавить.
После чего дополните конфигурацию следующей секцией:
$HTTP["url"] =~ "^/.well-known/" {
server.document-root = "/var/www/letsencrypt/.well-known/"
alias.url = ( "/.well-known/" => "/var/www/letsencrypt/.well-known/" )
dir-listing.activate = "enable"
}
Не забывайте, что после внесения изменений в конфигурационные файлы любой веб-сервер необходимо перезапустить.
Регистрация в Let’s Encrypt
Регистрация нужна для формирования ключевой пары, которой впоследствии подписываются все запросы, что позволяет удостовериться в подлинности отправителя. Это важно, так как все запросы передаются по открытым каналам и теоретически возможен их перехват и модификация.
Адрес электронной почты указываемый при регистрации используется для рассылки уведомлений, например, при неудачной попытке продления сертификата, поэтому следует указывать рабочий ящик, лучше всего собственный. Один и тот-же адрес можно использовать для регистрации на разных хостах, ограничений по этому параметру нет.
Для регистрации выполните команду:
certbot register -m admin@example.com
Для успешного прохождения процедуры вам потребуется всего-лишь согласиться с условиями использования. Учетная информация будет сохранена в каталог /etc/letsencrypt/accounts
, если содержимое данной директории будет утрачено, то вы не сможете продлить сертификаты и вам придется получать их заново, создав новый аккаунт. Это следует учитывать, например, при переносе системы на новый сервер.
Если вам необходимо изменить адрес электронной почты аккаунта, скажем при смене администратора, то это можно сделать следующей командой:
certbot register --update-registration -m new_admin@example.com
Следует помнить, что технической возможности восстановления аккаунта нет и в случае его утраты вам придется заново выпускать все сертификаты.
Получение сертификата
Наконец-то мы подошли к самому главному – получению сертификата, но не стоит спешить, количество запросов на сертификат в единицу времени ограничено (20 запросов на регистрацию в неделю и 5 неудачных запросов в час), поэтому следует убедиться, что все сделано правильно. Для этого следует использовать возможность тестового запуска Certbot, наберем в консоли:
certbot certonly --dry-run --webroot -w /var/www/letsencrypt -d example.com -d www.example.com
Ключ --dry-run
включает тестовый режим, при котором производится симуляция получения сертификата, --webroot
– указывает используемый плагин, после ключа -w
указываем путь к директории для letsencrypt, а затем через ключ -d
указываем домены для которых мы получаем сертификат. Как минимум это должно быть основное имя сайта и имя c www, хотя никто не мешает включить вам в сертификат все нужные поддомены или вообще разные домены. Лимит на количество доменов в сертификате равен 100.
При удачном прохождении теста вы получите краткий ответ. А в случае неудачи довольно развернутый лог, который обычно легко позволяет понять, что именно пошло не так и оперативно исправить ошибки:
После того как тестовый запуск увенчался успехом можно переходить к получению сертификата:
certbot certonly --webroot -w /var/www/letsencrypt -d example.com -d www.example.com
Сертификат получен, отлично! Но где нам его искать? Перейдем в директорию:
cd /etc/letsencrypt/live
- cert.pem – собственно сертификат
- chain.pem – цепочка доверия, включает корневой и промежуточный сертификаты Let’s Encrypt
- fullchain.pem – полная цепочка, включающая кроме содержимого chain.pem сам сертификат
- privkey.pem – закрытый ключ сертификата, данный файл является секретным.
Именно эти файлы следует использовать в конфигурационных файлах служб при настройке SSL.
certbot certonly --webroot -w /var/www/letsencrypt --expand -d example.com -d www.example.com -d forum.example.com
Продление сертификатов
certbot -q renew
# Options used in the renewal process
[renewalparams]
authenticator = webrootinstaller = Noneaccount = 4073d66415ef4c5a89e2cbca53e5f899
[[webroot_map]]
example.com = /var/www/letsencrypt
www.example.com = /var/www/letsencrypt
forum.example.com = /var/www/letsencrypt
--webroot -w /var/www/example.com
Поэтому мы рекомендуем всегда проверять возможность продления командой:
certbot renew --dry-run
certbot -q renew --allow-subset-of-names
- –pre-hook – позволяет выполнять действия перед запуском certboot
- –post-hook – выполняет указанные действия после запуска certboot
- –renew-hook – выполняет действия только после успешного продления сертификата.
certbot -q renew --allow-subset-of-names --renew-hook "service nginx reload; service vsftpd restart"
renew-hook = service nginx reload; service vsftpd restart
RSS
VestaCP меняем сертификат ssl на ssl от Let’s Encrypt
В сегодняшней статье рассмотрим как можно поменять SSL сертификат для админ панели VestaCP.
Как известно браузеры все беспощаднее относятся к незащищённым соединениям и самоподписным сертификатам. Если вы используете для управления хостингом панель управления VestaCP, то скорее всего обращали внимание, что подключение к ней в браузерах открывается как не доверительное, все это из-за самоподписного SSL сертификата.
Как же для админ-панели управления VestaCP вместо самоподписанного сертификата использовать ssl сертификат от Lets Encrypt?
VestaCP и сертификаты Let’s Encrypt
Используя VestaCP мы можем в автоматическом режиме получать и продлевать для доменов SSL сертификаты от Lets Encrypt.
Поэтому напрашивается решение, чтобы не добавлять самоподписной SSL сертификат панели управления VestaCP в исключения в браузере, нужно обращаться к панели по доменному имени, например: “https://mydomen.ru:8083
“. Но если вы сделаете это, то все равно получите сообщение об ошибке, что ваше соединение не защищено.
Причина в том, что панель работает как отдельный сервис на порту 8083. Если мы хотим запустить панель используя доменное имя, то для панели нужно прописать сертификат от домена.
Давайте заменим наши сертификаты выполнив следующие действия:
Сначала сохраните старые сертификаты панели под новым именем (на всякий случай):
sudo mv /usr/local/vesta/ssl/certificate.crt /usr/local/vesta/ssl/certificate.crt.bak
sudo mv /usr/local/vesta/ssl/certificate.key /usr/local/vesta/ssl/certificate.key.bak
Далее создадим символьную ссылку на действующий SSL сертификат от нашего сайта.
sudo ln -s /home/admin/conf/web/ssl.mydomen.ru.crt /usr/local/vesta/ssl/certificate.crt
sudo ln -s /home/admin/conf/web/ssl.mydomen.ru.key /usr/local/vesta/ssl/certificate.key
- admin — имя пользователя которому принадлежит домен
- mydomen.ru — имя домена зарегистрированного в панели с SSL сертификатом.
После этого перезапустите панель VestaCP:
sudo service vesta restart
Теперь зайдите в панель по имени домена https://mydomen.ru:8083
и убедитесь, что все работает.
После данных манипуляций вам не придется каждые 90 дней вручную копировать сертификаты домена для панели, и уж тем более писать скрипт копирования и настраивать CRON
. Этот способ заставляет панель считать сертификаты от нашего домена своими сертификатами.
[endtxt]
RSS
- Тест скорости дисков в Linux
- Как запустить команду в фоне в Linux
- Ошибка несоответствие размеров GPT PMBR
- nginx: [warn] protocol options redefined
- Как включить поддержку linux в windows 11
[РЕШЕНО] Error: Let’s Encrypt validation status 400. VestaCP

Сегодня в статье рассмотрим решение очередной ошибки в админ панели VestaCP, а точнее ошибки выпуска сертификата от Let`s Encrypt (Error: Let’s Encrypt validation status 400)
И так выпущенный сертификат вашего домена подходит к концу и VestaCP должна перевыпустить его на свежий, но этого почему-то не происходит. Давайте разберемся почему.
У меня так случилось с сертификатом для самой же VestaCP. В данной статье описана подмена самоподписанного сертификата VestaCP на сертификат от домена.
А все потому-что в конфигурационных файлах nginx была добавлена строчка с редиректом. Вот пример моего файла с редиректом по порту 80.
server {
listen 111.111.111.111:80;
server_name mydns24.ru www.mydns24.ru;
return 301 https://mydns24.ru:8083;
root /home/admin/web/mydns24.ru/public_html;
....
данная строчка return 301 https://mydns24.ru:8083;
перенаправляет весь трафик с 80 порта на порт 8083 по протоколу https. А для обновления нашего сертификата должно быть доступно наше доменное имя по порту 80. Вот в этом и вся загвоздка.
Исправляем ошибку Error: Let’s Encrypt validation status 400.
И так для того чтобы наши сертификаты обновились в автоматическом режиме давайте исправим конфигурационный файл nginx:
server {
listen 111.111.111.111:80;
server_name mydns24.ru www.mydns24.ru;
# return 301 https://mydns24.ru:8083;
root /home/admin/web/mydns24.ru/public_html;
....
Ставим перед return знак # и сохраняем наш файл
Ctrl+X, Y, Enter
Перезапускаем сервер nginx
sudo /etc/init.d/nginx restart
Переходим в панель VestaCP и обновляем наш сертификат. Я убрал все галочки с сертификата и сохранил настройки, а далее опять поставил галочки для выдачи сертификата.

После данных манипуляций ошибка Error: Let’s Encrypt validation status 400 исчезла и мой сертификат обновился без ошибок.
[endtxt]
Stunnel или бегство от 1С и SSL
После массового перехода ведущих поставщиков эл. почты в РФ [mail.ru yandex.ru], на защищенный тип соединений SSL, произошла массовая “истерия” у программистов 1С. Так как данный продукт в свой базовой версии 8.2 не умеет работать с почтой с использованием SSL. Так случилось, что данную проблему как всегда повесили на ИТ. Ведь почта их вотчина 🙂