Сертификат выдают на конкретные имена, и клиент сверяет с ними адрес.
Второй сайт на этом сервере, shop.lab.test, работает без жалоб. Но часть старых ссылок ведёт на www.shop.lab.test, и nginx отвечает на оба имени. Проверь их.
Открой shop по двум адресам
Запроси https://shop.lab.test/ и https://www.shop.lab.test/, потом посмотри имена в сертификате shop.
Сначала предположи
В nginx оба имени ведут на один и тот же server. Что напечатает curl для www.shop.lab.test?
Теперь начни упражнение, выполни команду и сверь прогноз с выводом.
Имена сайта записаны в расширении SAN — Subject Alternative Name. curl ищет в этом списке имя из адреса, буква в букву, а CN в subject современные клиенты для проверки не используют. www.shop.lab.test — отдельное имя, и раз его нет в SAN, проверка не прошла.
Как nginx узнал, какой сертификат отдать? Имя сайта клиент передаёт в самом начале TLS, до всякого HTTP, — это SNI. По нему nginx выбирает server и его сертификат, так же как по заголовку Host выбирает сайт для HTTP. Для www.shop.lab.test нашёлся server shop, и nginx отдал сертификат shop с одним именем.
openssl s_client берёт имя для SNI из -connect. Подключаясь по адресу, имя задают отдельно: -servername shop.lab.test.