Как работает клиент-серверное приложение по TLS (OpenSSL)

Есть клиент-серверное приложение который работает по TLS

Он работает через TLS и там уже есть ключ и сертификат. Но я не очень понимаю как вообще работает клиент серверное приложение через TLS

Я как понял есть грубо говоря 3 участника:

1. Клиент

2. Сервер

3. Центр сертификации

Как я понял алгоритм работы такой.

1. CA генерирует приватный ключ и корневой сертификат

2. Клиент и сервер генерируют свои приватные ключи и сертификаты

3. Потом клиент и сервер отправляет свои сертификаты на подпись CA

4. CA подписывает сертификаты клиент и сервера

5. Ну и дальше идет обычная передача данных

Я правильно понял алгоритм с сертификатами. Просто внутренняя чуйка говорит что алгоритм не очень верный.

Заранее спасибо