Внедрение SSL сертификата Comodo

Как получить бесплатный сертификат от китайского WoSign на год я уже рассказывал. Но вот для рабочего портала потребовался Wildcard SSL сертификат. Мы прикупили Ukrnames Wildcard SSL Certificate у партнера Comodo. Через некоторое время получаю в архиве следующие файлы:

*_domain_tld.crt
 ca_1.crt
 ca_2.crt
 ca_3.crt
*_domain_tld.crt — сертификат домена

файлы ca_*.crt — промежуточные сертификаты

Внедрение

Чтобы все работало и браузеры не ругались на якобы не доверенный сертификат, нужно все эти файлы сертификатов объединить в один файл

awk 1 \*_domain_tld.crt ca_3.crt ca_2.crt ca_1.crt > domain.tld.crt

Важно!!! *.crt должны идти именно в таком порядке, не иначе

В nginx’е в секции http пишем

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

остальное в нужном виртуальном конфиге

resolver 127.0.0.1;
ssl_stapling on;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:!EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/ssl/certs/nginx/domain.tld.crt;
ssl_certificate_key /etc/ssl/certs/nginx/domain.tld.key;
add_header Strict-Transport-Security 'max-age=15552001; includeSubDomains';

(Переходом на TLS1.2 и использование современных средств шифрования на посещаемом портале, мы стимулируем пользователей переходить на новые версии браузеров, в результате для их же пользы)

Важно!!! Об использовании add_header Strict-Transport-Security ‘max-age=15552001’; читаем с статье «Бесплатный ssl сертификат? Пожалуйста!!!«

У меня wildcard сертификат, поэтому я добавил includeSubDomains

Обязательно проверяем конфиг и передергиваем nginx

nginx -t
nginx -s reload

Посмотрим как сертификат «видят» браузеры

openssl s_client -connect sudomain.domain.tld:443
….
Certificate chain
0 s:/OU=Domain Control Validated/OU=Provided by Center of Ukrainian Internet Names (UKRNAMES)/OU=Ukrnames Wildcard SSL/CN=*.domain.tld
i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
1 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
2 s:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
3 s:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root

Verify return code: 0 (ok)

Cубъект (“s”) сертификата №0 сервера Center of Ukrainian Internet Names подписан издателем (“i”), который в свою очередь является субъектом сертификата №1, подписанного издателем, который в свою очередь является субъектом сертификата №2, подписанного общеизвестным издателем AddTrust External TTP Network, чей сертификат хранится во встроенной в браузеры базе данных сертификатов

Ошибок нет, проверяемся на ssllabs

У меня вышло

Внедрение SSL сертификата Comodo

Если не подключить промежуточные сертификаты

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

openssl s_client -connect subdomain.domain.tld:443
Certificate chain
0 s:/OU=Domain Control Validated/OU=Provided by Center of Ukrainian Internet Names (UKRNAMES)/OU=Ukrnames Wildcard SSL/CN=*.domain.tld
i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA

Verify return code: 21 (unable to verify the first certificate)

а тест на ssllabs даст ошибку

Chain issues Incomplete

И пользователи получают ругань в браузере, хотя и будет уровень А

Александр Черных
системный администратор

Статьи по теме