Продление SSL GlobalSign для krivoshein.site через FirstVDS и Nginx/WordOps

На krivoshein.site стоит не бесплатный Let’s Encrypt, а платный сертификат GlobalSign (AlphaSSL). Решение старое: нормальная цепочка, предсказуемый срок действия и меньше сюрпризов на старых устройствах. Сертификат подходил к концу, поэтому его продлили и заодно записали весь процесс — от панели FirstVDS до конфига Nginx на WordOps.

Ниже — практичный разбор без маркетинга: что нажимать в панели, какие файлы приходят от GlobalSign и как их разложить по серверу.

Где и как продлевать сертификат

Сертификат для krivoshein.site оформлен через панель FirstVDS. В разделе SSL-сертификатов интерфейс прямолинейный: выбираешь домен, продлеваешь заказ, дальше стандартная история с CSR и подтверждением домена.

CSR уже был, приватный ключ лежит на сервере, новый ключ не понадобился. В панели FirstVDS заполняются данные владельца (ФИО, e-mail, телефон) и выбирается подтверждение домена через DNS TXT-запись. Для GlobalSign это классический вариант.

Подтверждение домена через DNS TXT

После оформления заказа панель FirstVDS выдаёт строку вида:

_globalsign-domain-verification=XXXXXXXXXXXX...

Эту запись нужно добавить в DNS для домена krivoshein.site. DNS живёт у регистратора, так что всё сводится к добавлению TXT-записи в зону. Через некоторое время GlobalSign проверяет запись, домен подтверждается, и сертификат уходит на выпуск.

После выпуска в панели FirstVDS становятся доступны файлы сертификата. Скачивается набор архивов и отдельный CSR, но нужен именно zip с готовыми сертификатами.

Что прислал GlobalSign: разбор файлов

Из архива FirstVDS/GlobalSign получается набор примерно такого вида:

  • www_krivoshein_site.crt — основной сертификат для www.krivoshein.site (в SAN обычно и сам krivoshein.site);
  • GlobalSign GCC R6 AlphaSSL CA 2025.crt — промежуточный сертификат CA;
  • GlobalSign.crt — корневой сертификат GlobalSign;
  • www_krivoshein_site.p7b — PKCS#7-пакет с тем же содержимым, больше полезен для IIS/Windows.

Отдельно есть приватный ключ, который ранее генерировали на сервере. Он выглядит как стандартный блок:

-----BEGIN RSA PRIVATE KEY-----
...закрытый ключ...
-----END RSA PRIVATE KEY-----

Показывать его где-либо кроме сервера — плохая идея, поэтому в блоге только заглушка.

Директория под сертификат на сервере

Сервер с krivoshein.site крутится на WordOps поверх Nginx. Чтобы не размазывать ключи и сертификаты по системе, удобна отдельная директория для домена:

mkdir -p /etc/ssl/krivoshein.site
cd /etc/ssl/krivoshein.site

Сюда же кладётся приватный ключ:

nano /etc/ssl/krivoshein.site/www_krivoshein_site.key

Вставляется блок с приватным ключом, сохраняется. Права — минимально необходимые:

chmod 600 /etc/ssl/krivoshein.site/www_krivoshein_site.key
chown root:root /etc/ssl/krivoshein.site/www_krivoshein_site.key

Дальше на сервер копируется zip с сертификатами из панели FirstVDS и распаковывается:

cd /etc/ssl/krivoshein.site
unzip /root/14836355.zip

В каталоге оказываются GlobalSign GCC R6 AlphaSSL CA 2025.crt, GlobalSign.crt, www_krivoshein_site.crt и p7b.

Собираем fullchain и ca-bundle

Для Nginx обычно нужны два файла:

  • fullchain — основной сертификат плюс цепочка до корневого;
  • ca-bundle (для ssl_trusted_certificate) — цепочка CA для stapling и проверки.

Fullchain

Fullchain собирается так:

cd /etc/ssl/krivoshein.site

cat www_krivoshein_site.crt \
    GlobalSign\ GCC\ R6\ AlphaSSL\ CA\ 2025.crt \
    > fullchain.crt

chmod 644 fullchain.crt
chown root:root fullchain.crt

Этого достаточно для большинства клиентов: они получают сертификат сайта и промежуточный, дальше опираются на доверенные корневые из своей системы.

CA bundle

Для ssl_trusted_certificate — отдельный файл с промежуточным и корневым:

cat GlobalSign\ GCC\ R6\ AlphaSSL\ CA\ 2025.crt \
    GlobalSign.crt \
    > ca-bundle.crt

chmod 644 ca-bundle.crt
chown root:root ca-bundle.crt

Этот файл nginx использует, в частности, для OCSP stapling.

Проверка: ключ подходит к сертификату

Перед правкой конфига стоит проверить, что приватный ключ действительно от этого сертификата, а не от прошлого набора. Сравниваются модули:

cd /etc/ssl/krivoshein.site

openssl x509 -noout -modulus -in www_krivoshein_site.crt | openssl md5
openssl rsa  -noout -modulus -in www_krivoshein_site.key | openssl md5

Если хэши совпали — пара ключ/сертификат корректная. Если нет — где-то перепутан ключ, лучше остановиться до reload nginx.

Настройка Nginx/WordOps

В WordOps SSL-конфиг для сайта лежит в /var/www/krivoshein.site/conf/nginx/ssl.conf. В нём указываются пути к собранным файлам:

listen 443 ssl;
listen [::]:443 ssl;

ssl_certificate         /etc/ssl/krivoshein.site/fullchain.crt;
ssl_certificate_key     /etc/ssl/krivoshein.site/www_krivoshein_site.key;
ssl_trusted_certificate /etc/ssl/krivoshein.site/ca-bundle.crt;

ssl_stapling on;
ssl_stapling_verify on;

HTTP/2 и HTTP/3 (QUIC) могут быть включены отдельно — они используют те же пути к сертификатам.

Редирект с http на https — отдельный блок на 80 порту:

server {
    listen 80;
    listen [::]:80;
    server_name krivoshein.site www.krivoshein.site;

    return 301 https://$host$request_uri;
}

Проверка конфига и reload nginx

После правки конфигов первым делом — синтаксис:

nginx -t

Если syntax is ok и test is successful — reload:

systemctl reload nginx

На этом этапе сайт уже должен отдавать новый сертификат. Дополнительно проверяются даты и цепочка через openssl с клиентской стороны:

openssl s_client -connect krivoshein.site:443 -servername krivoshein.site \
    </dev/null 2>/dev/null | openssl x509 -noout -dates -issuer -subject
openssl: даты и issuer сертификата GlobalSign

В результате — срок действия до января 2027 и issuer GlobalSign GCC R6 AlphaSSL CA 2025. Продление прошло успешно, наружу уходит именно новый сертификат.

Проверка SSL-сертификата krivoshein.site

Краткий чеклист продления SSL через FirstVDS

Чтобы в следующий раз не вспоминать по шагам:

  • В панели FirstVDS продлить заказ SSL для krivoshein.site.
  • Выбрать подтверждение через DNS TXT, добавить запись _globalsign-domain-verification в зону домена, дождаться выпуска.
  • Скачать архив с сертификатами из панели FirstVDS.
  • На сервере в /etc/ssl/krivoshein.site:
    • убедиться, что лежит приватный ключ www_krivoshein_site.key с правами 600;
    • распаковать архив: www_krivoshein_site.crt, GlobalSign GCC R6 AlphaSSL CA 2025.crt, GlobalSign.crt;
    • собрать fullchain.crt (сертификат + промежуточный CA);
    • собрать ca-bundle.crt (промежуточный + корневой CA);
    • проверить совпадение модулей ключа и сертификата через openssl.
  • В ssl.conf nginx/WordOps прописать пути к fullchain, ключу и ca-bundle.
  • Сделать nginx -t и reload, проверить сертификат через openssl s_client.

Итог

Продление платного SSL через FirstVDS в связке с Nginx и WordOps — прямолинейная задача. Главное: аккуратно обращаться с приватным ключом и правильно собрать цепочку. Проверка через openssl перед reload nginx делает процедуру надёжной и повторяемой — как раз то, что нужно для боевого сайта.

Источники и ссылки


Комментарии загружаются…