🏠: ssl

Подкручиваем HTTPS

Больше трёх лет назад я делал подобную заметку, настало время дальнейшего пересмотра настроек. Я мало смыслю в безопасности, но зато люблю, когда онлайн-проверки светятся зелёным. За прошедшее время появился протокол HTTP/2, который я включил в конце 2017-го, и TLS 1.3, а версии TLS 1.0 и 1.1 уже признаются устаревшими с марта этого года, и отправляются на заслуженную пенсию составлять компанию уже находящемуся там SSL.

Итак, чтобы выключить все протоколы, кроме самых новых и надёжных, нужно добавить в файл конфигурации Апача, например, /etc/apache2/sites-available/default-ssl.conf (у меня другой файл, который создаёт Let’s Encrypt), следующее:

# Set Forward Secrecy
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLHonorCipherOrder on
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES

# Strict transport security
<IfModule mod_headers.c>
 Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
 Header always set Referrer-Policy "no-referrer-when-downgrade"
</IfModule>

С TLS 1.3, по ощущениям, действительно работает быстрее — ведь для установки защищённого соединения ему нужно меньше согласований. SSLHonorCipherOrder on — это включение расстановки приоритета алгоритмов шифрования самим сервером, что рекомендуется.

Также, я включил в Апаче поддержку OCSP Stapling — вроде бы полезная вещь — и, забавы ради, HSTS preloading, но это уже совсем необязательно.

Результат обстоятельного теста на Ssllabs после настройки:

Список других полезных тестов:

Два сертификата SSL на одном сервере Owncloud 7 (Ubuntu 14.04.1 LTS)

1) Положить ключ (.key), сертификат и промежуточный сертификат (.crt) в отдельную папку, типа /etc/apache2/ssl/domain-name.Если промежуточных сертификатов несколько, они должны идти друг за другом в одном файле, например:

-----BEGIN CERTIFICATE-----
содержимое&nbsp;--- содержимое&nbsp;--- содержимое&nbsp;--- содержимое
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
содержимое&nbsp;--- содержимое&nbsp;--- содержимое&nbsp;--- содержимое
-----END CERTIFICATE-----

2) Добавить виртуальный сервер в Apache:
nano /etc/apache2/sites-available/default-ssl.conf

ServerName www.yoursite2.com
 DocumentRoot /var/www/site2
 SSLEngine on
 SSLCertificateFile /etc/apache2/ssl/domain-name/www_yoursite2_com.crt
 SSLCertificateKeyFile /etc/apache2/ssl/domain-name/www_yoursite2_com.key
 SSLCertificateChainFile /etc/apache2/ssl/domain-name/DigiCertCA.crt

3) Отредактировать файл config/config.php в папке сервера Owncloud, добавив второй домен в доверенные:

'trusted_domains' => array('contoso.com', 'example.org', ),

4) Перезапустить Apache:

service apache2 restart