Привет, друзья. Не для кого не открою секрет, что работа сайтов через https протокол становится не просто нормой жизни, а уже и обязательным условием. Но очень многие сайты все еще продолжают работать через незащищенный http протокол. Однако, большое количество владельцев сайтов уже подумывает о переходе на SSL. При поиске информации о том, как приобрести сертификат безопасности, владельцы ресурсов сталкиваются с рядом трудностей. Это и выбор типа сертификата, цена, необходимость в сложной регистрации, подтверждение своей личности и другое. Многих, неискушенных пользователей, это отталкивает, отодвигая переход на безопасный протокол в долгий ящик. Но выход есть! Простой, бесплатный и быстрый.
В конкретном случае я расскажу, как бесплатно получить и настроить SSL сертификат от отличного проекта Let’s Encrypt для панели управления Vesta. Предполагаю, что у вас установлен Git и вы используете CP Vesta. Если Git не установлен, то его нужно установить. Все команды я выполняю под системой CentOS 6.x Для других сборок, суть не меняется.
Для максимального удобства можно создать bash скрипт, который можно назвать, например, ssl.sh:
Пару слов пояснений. В переменной USERNAME необходимо указать пользователя для которого будет получен сертификат. Для Vesta по умолчанию — это admin. DOMAIN — это переменная домена, для которого вы хотите получить сертификат. Указывать нужно голый хост, например, site.com
Далее все идет, как по маслу. Произойдет переход в нужную для установки директорию, будут клонированы репозитории с github. Будет создана директория для хранения файлов настроек. После чего будут созданы ссылки конфигов и будет перезапущен Apache сервер.
После перезапуска сервера произойдет запрос на сервер Let’s Encrypt для формирования и получения сертификата для конкретного пользователя и домена. Все сертификаты и конфиги будут созданы для Vesta полностью автоматически, а сайт в настройках будет помечен, как поддерживающий работу по SSL.
Если ваш пользователь имеет имя admin, то в директории /home/admin/conf/web будут скопированы сертификаты для указанного вами домена, плюс появится два дополнительных конфига: shttpd.conf и snginx.conf. Первый для Apache, второй для Nginx. Если необходимо поправить пути для вашей root директории, то это можно сделать в этих конфигах, так как пути будут прописаны по умолчанию к public_html.
Итак, заходите по ssh на свой сервер под root. Создаете скрипт или просто вводите команды вручную. Если создали скрипт, то не забудьте поставить права на исполнение — 755. Запускаете скрипт и вуаля. Ваш сайт уже имеет сертификат. Останется только сделать 301 редирект с http на https.
Сертификат будет действителен только 90 дней. Поэтому, последние строки в скрипте делают возможным получать новый сертификат каждые 60 дней в автоматическом режиме.
Если вы используете фреймворк Laravel 5.3, то вы столкнетесь с трудностью, что все ваши изображения и ссылки не работают через https, а продолжают использовать http протокол. О чем незамедлительно будет показана ошибка для пользователя.
Для решения этой проблемы есть простое и элегантное решение. Нужно всего-навсего «форсировать» ссылки в AppServiceProvider.php:
Суть форсирования заключается в автоматической замене всех ссылок на новый протокол, что видно из кода.
Вот и все. Хотите проделать этот фокус для разных своих сайтов, то просто меняете домен в скрипте на нужный.
Что мы имеем в финале? Запуск одного скрипта одной строчкой: sh ssl.sh И ваш сайт уже работает по защищенному протоколу, без никому ненужной головной боли. Всем удачи.
В конкретном случае я расскажу, как бесплатно получить и настроить SSL сертификат от отличного проекта Let’s Encrypt для панели управления Vesta. Предполагаю, что у вас установлен Git и вы используете CP Vesta. Если Git не установлен, то его нужно установить. Все команды я выполняю под системой CentOS 6.x Для других сборок, суть не меняется.
Для максимального удобства можно создать bash скрипт, который можно назвать, например, ssl.sh:
#!/bin/bash # How to Install Let’s Encrypt Certificate on VestaCP USERNAME = 'username' DOMAIN = 'mydomain.com' # Go to folder cd /usr/local # Clone git repositories git clone https://github.com/letsencrypt/letsencrypt.git git clone https://github.com/interbrite/letsencrypt-vesta.git git clone https://github.com/certbot/certbot.git # Create the “webroot” directory where Let’s Encrypt will write the files needed for domain verification. mkdir -p /etc/letsencrypt/webroot # Now also symlink the Apache conf file in your Apache conf.d directory. ln -s /usr/local/letsencrypt-vesta/letsencrypt.conf /etc/httpd/conf.d/letsencrypt.conf # Symlink letsencrypt-auto and letsencrypt-vesta in /usr/local/bin for easier access. ln -s /usr/local/letsencrypt/letsencrypt-auto /usr/local/bin/letsencrypt-auto ln -s /usr/local/letsencrypt-vesta/letsencrypt-vesta /usr/local/bin/letsencrypt-vesta # Restart server service httpd restart # Install at yum install at # Command for get SSL certificate and automatic Renewals every 60 days letsencrypt-vesta -a 60 $USERNAME $DOMAIN
Пару слов пояснений. В переменной USERNAME необходимо указать пользователя для которого будет получен сертификат. Для Vesta по умолчанию — это admin. DOMAIN — это переменная домена, для которого вы хотите получить сертификат. Указывать нужно голый хост, например, site.com
Далее все идет, как по маслу. Произойдет переход в нужную для установки директорию, будут клонированы репозитории с github. Будет создана директория для хранения файлов настроек. После чего будут созданы ссылки конфигов и будет перезапущен Apache сервер.
После перезапуска сервера произойдет запрос на сервер Let’s Encrypt для формирования и получения сертификата для конкретного пользователя и домена. Все сертификаты и конфиги будут созданы для Vesta полностью автоматически, а сайт в настройках будет помечен, как поддерживающий работу по SSL.
Если ваш пользователь имеет имя admin, то в директории /home/admin/conf/web будут скопированы сертификаты для указанного вами домена, плюс появится два дополнительных конфига: shttpd.conf и snginx.conf. Первый для Apache, второй для Nginx. Если необходимо поправить пути для вашей root директории, то это можно сделать в этих конфигах, так как пути будут прописаны по умолчанию к public_html.
Итак, заходите по ssh на свой сервер под root. Создаете скрипт или просто вводите команды вручную. Если создали скрипт, то не забудьте поставить права на исполнение — 755. Запускаете скрипт и вуаля. Ваш сайт уже имеет сертификат. Останется только сделать 301 редирект с http на https.
Сертификат будет действителен только 90 дней. Поэтому, последние строки в скрипте делают возможным получать новый сертификат каждые 60 дней в автоматическом режиме.
Если вы используете фреймворк Laravel 5.3, то вы столкнетесь с трудностью, что все ваши изображения и ссылки не работают через https, а продолжают использовать http протокол. О чем незамедлительно будет показана ошибка для пользователя.
Для решения этой проблемы есть простое и элегантное решение. Нужно всего-навсего «форсировать» ссылки в AppServiceProvider.php:
public function boot() { // If production site. if (env('APP_ENV') === 'production') { // Change all links to https. \URL::forceSchema('https'); } }
Суть форсирования заключается в автоматической замене всех ссылок на новый протокол, что видно из кода.
Вот и все. Хотите проделать этот фокус для разных своих сайтов, то просто меняете домен в скрипте на нужный.
Что мы имеем в финале? Запуск одного скрипта одной строчкой: sh ssl.sh И ваш сайт уже работает по защищенному протоколу, без никому ненужной головной боли. Всем удачи.
