Настройка доверия CAcert в Firefox и запуск нескольких SSL‑виртуальных хостов с SNI
Настройка Firefox для доверия сертификату CAcert.org (опционально)
Если вы используете сертификат от CAcert.org, большинство браузеров по умолчанию не доверяют этому центру сертификации, и при заходе на сайт будет отображаться предупреждение. Ниже описан пошаговый процесс для Firefox: импорт корневого сертификата и включение автоматического обновления списка отозванных сертификатов (CRL).
Важно: для коммерческих сайтов с платёжами лучше покупать сертификат у признанного CA — просить всех посетителей перенастроить браузеры неудобно и снижает конверсию.
Шаг 1 — загрузите корневой сертификат
Перейдите на страницу CAcert и скачайте корневой сертификат в формате PEM: http://www.cacert.org/index.php?id=3 (ссылка Root Certificate (PEM Format) — http://www.cacert.org/certs/root.crt).

После скачивания откроется диалог «Downloading Certificate». Нажмите «View», чтобы просмотреть сертификат:

Убедитесь, что отпечатки совпадают с указанными ниже (проверьте их перед импортом):
SHA1 Fingerprint: 135C EC36 F49C B8E9 3B1A B270 CD80 8846 76CE 8F33
MD5 Fingerprint: A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B
Нажмите «Close» после проверки:

Шаг 2 — доверие центру сертификации
В окне импорта отметьте опцию «Trust this CA to identify web sites» (Доверять этому УЦ для идентификации веб‑сайтов) и нажмите «OK»:

Это добавит корневой сертификат в хранилище доверенных центров.
Импорт списка отозванных сертификатов (CRL) в Firefox
Чтобы Firefox автоматически проверял отозванные сертификаты CAcert, добавьте CRL и включите автопросмотр обновлений.
Перейдите в меню: Инструменты > Параметры (Tools > Options) и откройте вкладку Advanced > Encryption, затем нажмите «Revocation Lists».

В открывшемся окне «Manage CRLs» нажмите «Import…»:

Вставьте URL списка отзыва CAcert и нажмите OK:
http://crl.cacert.org/revoke.crl

Через несколько секунд появится сообщение; подтвердите включение автоматических обновлений:

Нажмите «Yes», затем отметьте «Enable Automatic Update for this CRL» и нажмите «OK»:


После этого вы должны без предупреждений заходить на SSL‑виртуальные хосты с сертификатом CAcert:

Тестирование поддержки SNI и запуск нескольких SSL‑виртуальных хостов на одном IP
SNI (Server Name Indication) позволяет серверу отдавать несколько сертификатов на одном IP‑адресе. Проверьте поддержку в браузере на https://alice.sni.velox.ch/.
Ниже — список клиентов, которые поддерживают SNI (перевод оригинального списка):
- Opera 8.0 и новее (необходимо включить TLS 1.1 при необходимости)
- Internet Explorer 7 и новее (только в Windows Vista и новее; не поддерживается в Windows XP)
- Firefox 2.0 и новее
- curl 7.18.1 и новее (при сборке с TLS‑стеком, поддерживающим SNI)
- Chrome 6.0 и новее (поддержка на всех платформах; ранние релизы ограничены платформами)
- Safari 3.0 и новее (в OS X 10.5.6+ и в Windows Vista+)
Если ваш nginx поддерживает SNI, дополнительной конфигурации не требуется — просто добавьте ещё один SSL vhost на тот же IP (как показано в главе 5 исходного руководства).
Как проверить, включена ли поддержка SNI в вашей сборке nginx
Выполните:
nginx -VВ выводе должна присутствовать строка TLS SNI support enabled. Пример вывода:
root@server1:~# nginx -V
nginx version: nginx/0.8.54
TLS SNI support enabled
configure arguments: --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-0.8.54/debian/modules/nginx-upstream-fair
root@server1:~#Пример конфигурации виртуального хоста для nginx
Если используете nginx версии 0.8.21 и новее, конфигурация может выглядеть так:
| server { listen 80; ## listen for ipv4 listen [::]:80; ## listen for ipv6 listen 443 ssl; listen [::]:443 ssl; ssl_certificate /etc/ssl/certs/www.hostmauritius.net.pem; ssl_certificate_key /etc/ssl/private/www.hostmauritius.net.key; server_name www.hostmauritius.net hostmauritius.net; root /var/www/www.hostmauritius.net/web; if ($http_host != "www.hostmauritius.net") { rewrite ^ $scheme://www.hostmauritius.net$request_uri permanent; } location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } location ~ /\. { deny all; } } |
Для nginx старее 0.8.21 используйте вариацию без параметра ssl в директиве listen:
| server { listen 80; ## listen for ipv4 listen [::]:80; ## listen for ipv6 listen 443; listen [::]:443; ssl_certificate /etc/ssl/certs/www.hostmauritius.net.pem; ssl_certificate_key /etc/ssl/private/www.hostmauritius.net.key; server_name www.hostmauritius.net hostmauritius.net; root /var/www/www.hostmauritius.net/web; if ($http_host != "www.hostmauritius.net") { rewrite ^ $scheme://www.hostmauritius.net$request_uri permanent; } location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } location ~ /\. { deny all; } } |
Убедитесь, что для нового vhost созданы сертификат и приватный ключ (см. главы 4, 6 и 7 исходного руководства). Возможно, потребуется добавить цепочку промежуточных сертификатов (chain file), как описано в разделе про промежуточные УЦ.
Если вы создаёте новый vhost, активируйте его, создав символическую ссылку в /etc/nginx/sites-enabled/:
cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/www.hostmauritius.net.vhost www.hostmauritius.net.vhostПерезагрузите nginx:
/etc/init.d/nginx reloadПосле успешной перезагрузки все SSL‑сайты на этом IP с корректными сертификатами должны открываться без предупреждений.
Дополнительно — методология выбора и проверок (полезные шаблоны и чек‑листы)
Когда использовать CAcert, а когда платный CA
- Используйте CAcert для внутренних, тестовых и учебных окружений, где вы контролируете клиентов.
- Для публичных коммерческих сайтов и платежей выбирайте признанный CA (Let’s Encrypt, коммерческие издатели), чтобы обеспечить совместимость с клиентскими устройствами без ручной настройки.
Ментальная модель (как думать о сертификатах и SNI)
- SSL/TLS = удостоверение личности сервера + зашифрованный канал.
- CA выдает сертификат, браузер должен доверять корню CA или цепочке.
- SNI позволяет серверу выбрать сертификат по имени хоста до установления TLS‑сессии.
Короткий чек‑лист перед выпуском vhost в продакшен
- Сертификат действителен и содержит правильный CN/SAN.
- Приватный ключ хранится с корректными правами (600).
- Включена цепочка intermediate, если требуется.
- nginx собран с поддержкой SNI (если нужна множественность сертификатов на одном IP).
- CRL/OCSP настроены и проверяются (по возможности).
- Проверены современные параметры шифрования (TLS 1.2/1.3, отказ от слабых шифров).
- Тесты с реальными браузерами и mobile‑устройствами пройдены.
Playbook: развертывание нового SSL‑vhost (быстрая пошаговая инструкция)
- Подготовьте CSR и подпишите сертификат у выбранного CA.
- Объедините сертификат и промежуточные цепочки в один PEM, если требуется.
- Поместите сертификат и ключ в /etc/ssl/certs/ и /etc/ssl/private/ с правами 644/600.
- Создайте конфигурацию vhost в /etc/nginx/sites-available/.
- Создайте символическую ссылку в sites-enabled.
- Проверить конфигурацию: nginx -t.
- Перезагрузите nginx.
- Протестируйте сайт: браузеры, утилиты curl и тест SNI.
Советы по безопасности и жёсткая конфигурация
- Отключите SSLv2/SSLv3 и при возможности TLS 1.0/1.1.
- Включите HSTS для постоянного использования HTTPS (внимание: правильно тестируйте перед включением в продакшен).
- Используйте современные наборы шифров, предпочтительно с ECDHE и AEAD.
- Настройте автоматическое обновление CRL/OCSP или используйте OCSP stapling на сервере.
Краткая таблица совместимости (выдержка)
| Клиент | Поддержка SNI | Замечание |
|---|---|---|
| Firefox 2+ | Да | Поддерживает SNI на всех платформах современных релизов |
| Internet Explorer 7+ | Частично | Поддерживается только в Vista и новее |
| Chrome 6+ | Да | Поддержка на большинстве платформ |
| curl 7.18.1+ | Да при сборке | Нужно, чтобы SSL‑библиотека (OpenSSL/gnutls) поддерживала SNI |
Критерии приёмки
- При заходе на сайт в браузере отсутствует предупреждение о недоверенном CA.
- nginx успешно перезагружается без ошибок: nginx -t && /etc/init.d/nginx reload.
- Сертификаты и цепочки распознаются утилитами (openssl s_client, curl) и браузерами, поддерживающими SNI.
- CRL или OCSP доступны и обновляются автоматически.
Краткое резюме
Импорт корневого сертификата CAcert и настройка CRL в Firefox устраняют предупреждения для пользователей, которые согласны перенастроить браузер. Для публичных сайтов лучше использовать признанный CA. Для размещения нескольких SSL‑сайтов на одном IP используйте SNI, предварительно проверив поддержку в вашем nginx и в целевых браузерах.
Ссылки
- nginx: http://nginx.org/
- nginx Wiki: http://wiki.nginx.org/
- OpenSSL: http://www.openssl.org/
- CACert.org: http://www.cacert.org/
- Ubuntu: http://www.ubuntu.com/
- Debian: http://www.debian.org/
Об авторе
Фалько Тимме — владелец Timme Hosting (высокоскоростной хостинг на nginx). Ведущий поддерживающий HowtoForge с 2005 года и один из основных разработчиков ISPConfig с 2000 года. Также участвовал в работе над книгой O’Reilly «Linux System Administration».
Похожие материалы
Как зарегистрироваться в ESPN+ без провайдера
Windows 11 Enterprise VM в VirtualBox — установка и устранение проблем
ESPN+ просит TV‑провайдера — что делать
Ярлык Windows Tools в Windows 11: все способы
Комментирование строк в Vim — быстрые способы