Transport Layer Security: відмінності між версіями

[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Рядок 25:
| date = 12 December 2016
}}</ref>.
 
В цілому, процес рукостискання складається з таких основних кроків:<ref name="ibm.12"/>
# Клієнт відправляє вітання ({{lang-en|client hello}}) в якому повідомляє сервер про підтримувану ним версію протоколу та список підтримуваних алгоритмів шифрування в порядку їх бажаності. Також це повідомлення має рядок випадкових байтів. Протокол дозволяє зазначати підтримувані клієнтом методи стиснення даних.
# У відповідь сервер відправляє власне вітання ({{lang-en|server hello}}), в якому називає вибраний ним шифр (CipherSuite) із запропонованого клієнтом переліку, ідентифікатор сеансу ({{lang-en|session ID}}) та рядок випадкових байтів. Також сервер віправляє свій цифровий сертифікат. Якщо сервер потребує цифровий сертифікат клієнта для його автентифікації, то до відповіді додається відповідний запит ({{lang-en|client certificate request}}) та перелік підтримуваних типів сертифікатів та унікальні імена ({{lang-en|Distinguished Name}}; DN) центрів сертифікації ({{lang-en|Certification Authority}}; CA).
# Клієнт перевіряє (верифікує) отриманий цифровий сертифікат сервера.
# Клієнт відправляє у відповідь рядок випадкових байтів зашифровану відкритим ключем сервера. Цей рядок необхідний для шифрування даних при подальшому обміні.
# Якщо сервер запитав сертифікат клієнта, то до відповіді додається рядок з випадковими байтами, який клієнт шифірує своїм приватним ключем, та цифровий сертифікат клієнта. Якщо клієнт не має сертифіката, то у відповідь відправляється відповідне попередження ({{lang-en|no digital certificate alert}}). Якщо сервер налаштований на обов'язкову автентифікацію клієнтів, то на цьому процедура рукостискання може перерватись.
# Сервер перевіряє (верифікує) сертифікат клієнта.
# Клієнт відправляє повідомлення про успішне завершення рукостискання ({{lang-en|finished}}).
# Сервер відправляє повідомлення про успішне завершення рукостискання, яке зашифроване таємним ключем.
# Тепер протягом сеансу клієнт та сервер можуть обмінюватись даними, зашифрованими спільним таємним ключем.
 
== Використані алгоритми ==