Весь смысл SSL-сертификата заключается в том, что браузер имеет достаточную степень доверия к открытому ключу сервера для транзакций HTTPS.
Сначала давайте рассмотрим, что произойдет, если мы не будем использовать сертификаты. Вместо этого сервер отправлял открытый ключ в виде открытого текста, а браузер инициировал зашифрованное соединение с его использованием (первое, что он сделал бы, - это зашифровал свой открытый ключ и надежно отправил его). Что если я и нападающий вклинились посередине? Я мог бы на лету заменить ваш открытый ключ на мой, иметь зашифрованное соединение с браузером, расшифровать все, что я получаю, зашифровать его с помощью вашего открытого ключа и отправить его (и наоборот для трафика типа ответа). Ни одна из сторон не заметит разницы, так как никто не знает открытых ключей заранее.
Итак, мы установили, что браузеру нужно как-то доверять моему открытому ключу. Один из способов сделать это - сохранить все зарегистрированные открытые ключи в браузере. Конечно, это потребовало бы обновления каждый раз, когда кто-то регистрировал открытый ключ, и это привело бы к раздутию. Можно также хранить открытые ключи в руках DNS-серверов 1 , но DNS-серверы также могут быть подделаны, и DNS не является безопасным протоколом.
Таким образом, единственный оставшийся вариант - «связать» доверие через механизм подписи. В браузере хранится информация о нескольких центрах сертификации, и ваш сертификат будет отправлен вместе с цепочкой других сертификатов, каждый из которых подписывает следующий и переходит в корневой / доверенный / встроенный центр сертификации. Задача CA - убедиться, что домен принадлежит вам, прежде чем подписывать сертификат для вас.
Поскольку CA является бизнесом, они взимают за это плату. Некоторые больше, чем другие.
Если вы сделали свой собственный сертификат, вы получите ошибку, похожую на:
Там нет значения для неподписанного сертификата. Это все равно что взять карандаш и буклет, нарисовать паспорт, в котором утверждается, что вы - Барак Обама. Никто не будет доверять этому.
1. В конце концов, ваша DNS-запись создается при регистрации домена. Использование более надежного протокола, который позволяет одновременно регистрировать открытые ключи, было бы интересной концепцией.