Free SSL для CP Vesta — легко. І SSL для Laravel

Привіт, друзі. Не для кого не відкрию секрет, що робота сайтів через https протокол стає не просто нормою життя, а й обов'язковою умовою. Але дуже багато сайтів все ще продовжують працювати через незахищений http протокол. Однак, велика кількість власників сайтів вже подумує про перехід на SSL. При пошуку інформації про те, як придбати сертифікат безпеки, власники ресурсів стикаються з низкою труднощів. Це і вибір типу сертифіката, ціна, необхідність у складній реєстрації, підтвердження своєї особистості та інше. Багатьох, недосвідчених користувачів, це відштовхує, відсуваючи перехід на протокол у довгий ящик. Але вихід є! Простий, безкоштовний і швидкий.

У конкретному випадку я розповім, як безкоштовно отримати і налаштувати 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 easier for 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 І ваш сайт вже працює по захищеному протоколу, без нікому непотрібного головного болю. Всім удачі.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.