Почему требуется HTTPS?
Чтобы проверить, является ли сайт аутентифицирован / сертифицирован или нет (несертифицированные сайты могут совершать злые поступки). Аутентифицированный веб-сайт имеет уникальный личный сертификат, приобретенный у одного из CA .
Кто такие CA (центры сертификации)?
CA - это всемирно доверенные компании, такие как GoDaddy, GeoTrust, VeriSign и т. Д., Которые предоставляют цифровые сертификаты веб-сайтам.
Что такое открытые ключи и закрытые ключи?
Ключи - это только длинные случайные числа, используемые для шифрования / дешифрования данных.
Открытые ключи - это ключи, которыми можно поделиться с другими. Закрытые ключи должны храниться в секрете.
Предположим, Джерри генерирует закрытый ключ и открытый ключ. Он делает много копий этого открытого ключа и делится с другими.
Теперь другие могут только шифровать данные с помощью открытого ключа, и эти данные могут быть расшифрованы только с помощью закрытого ключа Джерри.
Другой подход - использовать открытые ключи только для дешифрования данных и закрытые ключи только для шифрования данных.
Как компания получает сертификат?
Владелец сайта сначала генерирует открытый ключ и закрытый ключ, сохраняя секретный ключ в секрете.
Он передает файл запроса на подпись сертификата (CSR) и его открытый ключ в ЦС.
Затем CA создает персональный сертификат на основе CSR, включая имя домена, имя владельца, срок действия, серийный номер. и т.д., а также добавляет зашифрованный текст (= цифровая подпись ) к сертификату и, наконец, шифрует весь сертификат с помощью открытого ключа сервера и отправляет его обратно владельцу веб-сайта.
Затем этот сертификат расшифровывается с помощью закрытого ключа владельца веб-сайта и, наконец, он устанавливает его на веб-сайте.
Примечание: зашифрованный текст является цифровой подписью ЦС. Тот
текст зашифрован закрытым ключом CA и может быть только
расшифровывается открытым ключом CA .
Когда вы устанавливаете свой операционный
система или браузер, корневые сертификаты от многих доверенных центров сертификации, например
GeoTrust, VeriSign, GoDaddy и т. Д. Идут с этим. Эти корневые сертификаты
содержит открытый ключ этого провайдера CA, который помогает расшифровать
подпись.
Безопасность HTTPS можно разделить на 2 части (рукопожатия):
1. Чтобы подтвердить сертификат веб-сайта:
1) Когда вы вводите URL www.Google.com, сервер Google передает свой открытый ключ и сертификат (который был подписан GeoTrust) браузеру.
2) Теперь браузер должен проверить подлинность сертификата, то есть он фактически подписан с GeoTrust или нет.
Поскольку браузеры поставляются с предварительно установленным списком открытых ключей от всех основных ЦС, он выбирает открытый ключ GeoTrust и пытается расшифровать цифровую подпись сертификата, который был зашифрован закрытым ключом GeoTrust.
3) Если он может расшифровать подпись (что означает, что это заслуживающий доверия веб-сайт), то он переходит к следующему шагу, в противном случае останавливается и показывает красный крестик перед URL.
2. Чтобы создать безопасное соединение (шифрует исходящие и входящие данные), чтобы никто другой не мог его прочитать:
![enter image description here](https://i.stack.imgur.com/PtiF0.png)
1) Как я уже говорил, Google отправляет свой открытый ключ при входе на сайт www.Google.com. Любые данные, зашифрованные с помощью этого открытого ключа, могут быть расшифрованы только с помощью личного ключа Google, который Google не передает никому.
2) После проверки сертификата браузер создает новый ключ, назовем его Session Key и делаем 2 его копии. Эти ключи могут шифровать, а также дешифровать данные .
3) Затем браузер шифрует (1 копия сеансового ключа + другие данные запроса) с помощью открытого ключа Google. Затем он отправляет его обратно на сервер Google.
4) Сервис GoogleОн расшифровывает зашифрованные данные, используя свой закрытый ключ, и получает ключ сеанса и другие данные запроса.
Теперь, видите, сервер и браузер получили одинаковые копии сессии
ключ браузера. Ни у кого больше нет этого ключа, поэтому только сервер
и браузер может зашифровать и расшифровать данные. Этот ключ теперь будет
используется как для расшифровки, так и для шифрования данных.
5) Когда Google отправляет данные, такие как запрошенный HTML-документ и другие данные HTTP, в браузер, он сначала шифрует данные с помощью этого сеансового ключа, а браузер дешифрует данные с помощью другой копии сеансового ключа.
6) Аналогично, когда браузер отправляет данные на сервер Google, он шифрует их с помощью ключа сеанса, который сервер расшифровывает на другой стороне.
Примечание. Этот ключ сеанса используется только для этого сеанса. Если пользователь
закрывает веб-сайт и открывает снова, новый сеансовый ключ будет
создано.
не может насытиться сетью? негласно, когда вы набираете www.google.com в браузере