Кратко
Верхний вопрос: правильный вариант — TLS. HTTP сам шифрование не обеспечивает, а HTCPCP — шуточный протокол.
В сертификате должны быть отмечены четыре пункта:
- домены, для которых применим сертификат;
- данные выдавшего УЦ;
- подпись выдавшего УЦ;
- открытый ключ.
У тебя на скриншоте не отмечена подпись УЦ. MAC-адрес клиента и закрытый ключ в сертификате не содержатся.
По видимому сертификату:
CN=example.com subjectAltName=DNS:auth.example.comон подходит только для
auth.example.com, а не дляexample.comи не дляwww.example.com.
Почему так
Сертификат — это электронный документ, который связывает имя домена с открытым ключом. Выдав его, удостоверяющий центр ставит свою подпись, чтобы клиент мог проверить подлинность. Поэтому в сертификате есть:
- имя/домены владельца — через
subjectAltName; - данные УЦ-издателя;
- подпись УЦ;
- открытый ключ.
Закрытый ключ остаётся только на сервере: именно им сервер подтверждает, что у него есть соответствующая пара ключей. Передавать закрытый ключ клиенту в сертификате нельзя.
Как проверять соответствие домена сертификату
Смотри на subjectAltName — в первую очередь на значения DNS:.
- Если там есть
DNS:auth.example.com, сертификат действителен дляauth.example.com; example.comиwww.example.comс ним не совпадают;- если в сертификате есть SAN, то
CNобычно уже не считается главным ориентиром; *.example.comпокрываетwww.example.com,auth.example.com, но не самexample.comи неa.b.example.com.
Проверка результата
В первом задании должно быть выбрано ровно 4 пункта. Для видимого сертификата правильный домен — auth.example.com; для example.com и www.example.com нужен другой сертификат с соответствующим SAN.
Нижняя часть задания обрезана — можешь прислать её целиком с остальными доменами и сертификатами? Тогда я сопоставлю все пары точно.
