Как перевести сайт на https бесплатно.

У меня веб-сервер на Ubuntu+Apache2. Для nginx первые два шага аналогично. Далее уже специфичные для nginx настройки.
Шаг 1. Нужен SSL-сертификат. Иногда его бесплатно выдает Ваш хостер, например Reg.ru. Как бесплатно получить SSL-сертификат ? Идем на cloudflare.com, регистрируемся. Потребуется указать их DNS-сервера в качестве Ваших, не бойтесь ничего страшного не случится 🙂 Взамен получаете массу плюшек, например бесплатную аналитику. Заходим в раздел «Crypto» и в самом низу страницу жмем кнопку Generate Universal SSL. Получаем два текстовых файла, содержимое которых начинается со строк:
-----BEGIN CERTIFICATE----- (публичный ключ)
-----BEGIN PRIVATE KEY----- (закрытый, приватный ключ)

Шаг 2. Публичный ключ сохраняем в файл server.pem и копируем вот сюда: /etc/ssl/certs/
Приватный ключ сохраняем в файл server.key и копируем вот сюда: /etc/ssl/private/
Выставляем права на приватный ключ: sudo chmod 0600 /etc/ssl/private/server.key

Шаг 3. Активируем mod_ssl
sudo a2enmod ssl

Шаг 4. Включаем https по умолчанию
sudo a2ensite default-ssl

Шаг 5. Редактируем файл /etc/apache2/sites-enabled/default-ssl.conf
Вот здесь можно поступить хитро. Если Вы хотите, чтобы сайт был доступен и по http и по https то у Вас в настройках должно быть описано два виртуальных хоста:
Для http (этот «кусок конфига» можно взять со старого описания хоста): <VirtualHost *:80></VirtualHost>
Для https: <IfModule mod_ssl.c><VirtualHost _default_:443></VirtualHost></IfModule>

Нас интересует https. Поэтому в https-ном описании виртуального хоста выставляем:
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/ssl/certs/server.pem
SSLCertificateKeyFile /etc/ssl/private/server.key

Шаг 6. Перезагружаем apache: sudo service apache2 restart