В PKI, где все клиенты получают свои сертификаты из центра сертификации 2-го уровня, если новый ЦС появляется с законным сертификатом из цепочки, но глубже в иерархии, будут ли клиенты на том же уровне ЦС доверять его дочерним элементам. ? Это будут сертификаты с дополнительным неизвестный ЦС (третий), но со знакомыми сертификатами от корневого и подчиненного ЦС (2-й уровень) в цепочке?
Я знаю, что есть что-то вроде междоменных центров сертификации или что-то в этом роде, но технически это будет тот же домен, другой поддомен, если вообще будет. Действительно или нет, нет причин, по которым ЦС 3-го или 10-го уровня не выдал бы сертификат для верхнего уровня, не так ли?
Я сделал небольшой набросок, чтобы лучше объяснить:
Спасибо!
Клиент может доверять более глубокому сертификату, но это полностью автоматически.
С большинством серверов TLS у вас есть способ предоставить связку промежуточных сертификатов в дополнение к сертификату, используемому для этой конечной точки.
Таким образом, корню Letsencrypt доверяют большинство браузеров / клиентов.
Но сертификаты Letsencrypt поступают от более глубокого центра сертификации, которому обычно не доверяют напрямую. Сервер должен включать промежуточное звено.
Таким образом, когда клиент подключается, он получает промежуточные звенья, а также сертификат для ресурса, к которому он подключается. Он попытается установить доверительную цепочку от корня через промежуточные звенья до сертификата.
Итак, давайте посмотрим на случай https://serverfault.com/. Моя система доверяет только верхнему ЦС DigiCert, но не доверяет корневому ЦС DigiCert High Assurance EV. Но я могу использовать https://serverfault.com/ потому что сервер возвращает промежуточные звенья.
Если вы хотите запустить CLI, вы можете увидеть сертификаты с помощью openssl
echo '' | openssl s_client -showcerts -connect serverfault.com:443
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA
verify return:1
depth=0 C = US, ST = NY, L = New York, O = "Stack Exchange, Inc.", CN = *.stackexchange.com
verify return:1
---
Certificate chain
0 s:/C=US/ST=NY/L=New York/O=Stack Exchange, Inc./CN=*.stackexchange.com
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
-----BEGIN CERTIFICATE-----
MIIIP... # the intermediate
-----END CERTIFICATE-----
1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
-----BEGIN CERTIFICATE-----
MIIEs... # cert for stackexchange
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/ST=NY/L=New York/O=Stack Exchange, Inc./CN=*.stackexchange.com
issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3945 bytes and written 269 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
...
Таким образом, клиент не доверяет более глубоким центрам сертификации автоматически, но легко настроить, чтобы сертификатам можно было доверять.