Установка Let’s Encrypt плагина в cPanel (WHM)

В этой статье я приведу пример установки плагина Let’s Encrypt в cPanel (WHM).
Let’s Encrypt позволяет установить бесплатные трех месячные сертификаты для доменов и автоматически их продлевать.

Читать далее «Установка Let’s Encrypt плагина в cPanel (WHM)»

Настройка AutoSSL в cPanel

Приведу пример настройки AutoSSL в cPanel, который устанавливает бесплатные трех месячные сертификаты, а также периодически автоматически продлевает их. Когда сертификаты устанавливаются, то они также настраиваются в сервисах Apache, Dovecot и Exim.

Читать далее «Настройка AutoSSL в cPanel»

Как изменить email после регистрации Certbot (Let’s Encrypt)

Однажды после установки Certbot я указал не тот email адрес и в дальнейшем уведомления от Let’s Encrypt приходили не туда куда нужно.

Читать далее «Как изменить email после регистрации Certbot (Let’s Encrypt)»

Установка SSL сертификата для iRedMail

Допустим у нас есть подписанный SSL сертификат, либо мы его получим от Let’s Encrypt, как я описывал в этой статье:
Установка Certbot в Ubuntu

Чтобы установить SSL сертификат для iRedMail, нужно указать его в конфигурации Dovecot, Postfix и Apache2.

Читать далее «Установка SSL сертификата для iRedMail»

Let’s Encrypt Plugin в cPanel

Чтобы использовать Let’s Encrypt в cPanel, необходимо установить специальный плагин.
Для этого подключимся к серверу по SSH и выполним команду от root пользователя:

/scripts/install_lets_encrypt_autossl_provider

После установки плагина Let’s Encrypt, можно использовать его в меню управления AutoSSL (WHM >> Home >> SSL/TLS >> Manage AutoSSL).

Если понадобится удалить плагин, то выполним команду:

/usr/local/cpanel/scripts/uninstall_lets_encrypt_autossl_provider

Смотрите также:
Установка Certbot в Ubuntu

Установка Certbot в Ubuntu

На тесте установлю ACME клиент Certbot в Ubuntu 16.04 (xenial), который поможет получить бесплатные SSL сертификаты Let’s Encrypt на 90 дней и автоматически обновлять их.
Для других версий Ubuntu клиент Certbot устанавливается аналогично.

Первым делом добавим репозиторий Certbot и выполним установку:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache

Теперь запустим Certbot чтобы получить SSL сертификат:

sudo certbot --apache

Чтобы вручную внести изменения в конфигурацию Apache2 и Certbot не изменял её, можно выполнить команду:

sudo certbot --apache certonly

После запуска команды, необходимо выбрать сайт для которого будет запрашиваться SSL сертификат.

После получения сертификата отобразилась информация:

IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-08-01. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the «certonly» option. To non-interactively renew *all* of
your certificates, run «certbot renew»
— Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.

Создался отдельный файл конфигурации сайта для HTTPS, а в том что был добавились строки выполняющие переадресацию с HTTP на HTTPS, общем аналогичные изменения как я описывал в этой статье — Установка и настройка Let’s Encrypt SSL.

Для автоматического обновления необходимо выполнить команду:

sudo certbot renew

Команду также можно добавить в Cron для автоматического обновления, смотрите мою статью — Использование и настройка CRON

Пример добавления в Cron (каждый понедельник в 3:15):

sudo crontab -e
15 3 * * 1 certbot renew >> /var/log/certbot-renew.log

Либо в /etc/crontab:

15 7 * * 1 root certbot renew >> /var/log/certbot-renew.log

Для тестового обновления можно выполнить команду (конфигурация и сертификаты не будут затронуты):

sudo certbot renew --dry-run

Если срок сертификата еще не истекает и запустить обновление, то ничего не произойдет.
Для обновления сертификатов apache2 также должен работать на 80 порту.

Чтобы обновить версию самого Certbot, выполним команды:

sudo apt update
sudo apt install certbot

Смотрите также мою статью:
Как изменить email после регистрации Certbot (Let’s Encrypt)

Установка и настройка Let’s Encrypt SSL

На тесте установлю Let’s Encrypt котоый позволяет установить бесплатные SSL сертификаты на 90 дней и автоматически перевыдавать их.

Допустим на Ubuntu Server установлен Apache2 и есть один сайт, для которого мы настроили один файл конфигурации /etc/apache2/sites-available/test.conf, и включили его:

sudo a2ensite test
sudo service apache2 restart

Смотрите пример конфигурации в моей статье — Установка и настройка веб-сервера Apache2
Сайт работает по HTTP на 80, теперь приступим к установке Let’s Encrypt:

sudo apt-get update
sudo apt-get install git
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Перейдем в директорию с Let’s Encrypt и запросим сертификат для сайта:

cd /opt/letsencrypt
sudo ./letsencrypt-auto --apache -d example.com

Можно также запросить и для www поддомена:

sudo ./letsencrypt-auto --apache -d example.com -d www.example.com

Я заменил в статье настоящее имя сайта на example.com. Чтобы получить сертификат, сайт должен быть доступен по доменному имени из интернета.
Для ресурсов внутри сети, с серыми IP, получить сертификат не получится.

После получения сертификата у меня создался и активировался еще один файл конфигурации /etc/apache2/sites-available/test-le-ssl.conf со следующим содержимым:

<IfModule mod_ssl.c>
<VirtualHost *:443>
     ServerName example.com
     DocumentRoot /var/www/test/

     <Directory /var/www/test>
     Options -Indexes
     AllowOverride All
     Order allow,deny
     allow from all
     </Directory>

     ErrorLog /var/log/test.error.log
     CustomLog /var/log/test.access.log combined
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Так как во время получения сертификата я согласился на переадресацию HTTP запросов на HTTPS, то в конце моего файла конфигурации /etc/apache2/sites-available/test.conf добавилось следующее:

RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

По истечении срока действия сертификата, его можно обновить командой:

sudo /opt/letsencrypt/letsencrypt-auto renew

Команду также можно добавить в Cron для автоматического обновления, смотрите мою статью — Использование и настройка CRON

Пример добавления в Cron (каждый понедельник в 3:15):

sudo crontab -e
15 3 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/letsencrypt-renew.log

Если срок сертификата еще не истекает и выполнить команду обновления, то ничего не произойдет:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
——————————————————————————-
Processing /etc/letsencrypt/renewal/example.com.conf
——————————————————————————-
Cert not yet due for renewal
——————————————————————————-
The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem expires on 2018-08-01 (skipped)
No renewals were attempted.
——————————————————————————-

Смотрите также:
Установка Certbot в Ubuntu

Перенаправление запросов на SSL

Опишу несколько вариантов перенаправления запросов с HTTP на HTTPS, первый и второй методы самые надежные:

1) Через virtual hosts.
В конфигурации сайта добавим строку Redirect, например когда на сайт установили SSL сертификат и нужно перенаправить все запросы на HTTPS:

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName ixnfo.com
   ServerAlias www.ixnfo.com
   Redirect / https://ixnfo.com/
</VirtualHost>

<VirtualHost *:443>
   ServerName ixnfo.com
   ServerAlias www.ixnfo.com
   DocumentRoot /var/www/html
   SSLEngine On
   ...
</VirtualHost>

Если нужно перенаправить только некоторые запросы:

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName ixnfo.com
   ServerAlias www.ixnfo.com
   Redirect /forum https://forum.ixnfo.com/
</VirtualHost>

<VirtualHost *:443>
   ServerName ixnfo.com
   ServerAlias www.ixnfo.com
   DocumentRoot /var/www/html
   SSLEngine On
   ...
</VirtualHost>

2) Перенаправление с использованием .htaccess.
Аналогично как и в первом варианте, в нужную директорию сайта положим файл .htaccess и добавим в него строку (чтобы веб-сервер учитывал файл .htaccess, нужно в конфигурации сайта выше указать опцию AllowOverride All):

Redirect /forum https://forum.ixnfo.com/

3) И не рекомендуемый способ, используя mod_rewrite, содержимое нужно добавить в файл .htaccess:

# Включение функции Rewrite
RewriteEngine On
# Проверяем что соединение не HTTPS
RewriteCond %{HTTPS} !=on
# Направляем в то же место, но уже HTTPS:
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Еще пример:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_USER_AGENT} ^(.+)$
RewriteCond %{SERVER_NAME} ^ixnfo\.com$ [OR]
RewriteCond %{SERVER_NAME} ^www\.ixnfo\.com$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Header add Strict-Transport-Security "max-age=300"
</IfModule>

Чтобы разрешить некоторым страницам открываться по http и https, добавим внутри верхнего примера:

RewriteCond %{REQUEST_URI} !^/dir/
RewriteCond %{REQUEST_URI} !^/dir/file.php

Смотрите также:
Использование .htaccess
Как настроить SSL и HTTPS для WordPress
Установка Certbot в Ubuntu

Обновление сертификата iRedMail

Приведу пример обновления самоподписанного сертификата на Ubuntu Server с установленным iRedMail.

Переключимся на root пользователя:

Читать далее «Обновление сертификата iRedMail»

Решение проблемы SSL «Connection is not secure — Parts of this page are not secure (such as images)»

Заметил однажды одном сайте с подписанным SSL сертификатом, сообщение от браузера Mozilla Firefox:

Connection is not secure — Parts of this page are not secure (such as images)

Как выяснилось на сайте были вставлены картинки с других источников, соответственно соединение можно считать не защищенным и для решения этой проблемы, картинки нужно закачать на текущий сайт и изменить ссылка на страницах, обязательно начиная с https://.

Если сайт работает по http:// и https://, а картинки находятся на нем же, то ссылки нужно изменить например с:

<img src="http://www.ixnfo.com/img.jpg">

на

<img src="/img.jpg">

Все.