SSL — это сетевой протокол транспортного уровня призванный решить две задачи:
шифрование данных между двумя собеседниками;
верификацию личности собеседников.
Первая задача не требует объяснений, а равно к счастью, каких-либо дополнительных действий со стороны администраторов и пользователей.
Вторая задача, работает на базе сертификатов, которые должны выдаваться вручную. Сертификат сам по себе состоит из двух частей. Первая часть — ключ, это приватные данные, которые должны храниться в секрете. Вторая часть - публичный ключ, считается открытой и не представляет собой тайны.
Сертификат может при желании изготовить кто угодно. Поэтому для решения задачи верификации личности собеседника, требуется третья сторона, которой доверяют оба собеседника.
Эта сторона называется CA (Center Authority). Один или оба собеседника высылают CA свои сертификаты. CA (как и все) также имеет свой сертификат. CA подписывает сертификат своим закрытым ключом. CA берет на себя функции поручителя за все подписанные сертификаты.
Публичный ключ CA находится в свободном доступе. Теперь любой собеседник может взять его и проверить подлинность сертификата собеседника, если конечно он доверят CA.
Любой сервер, работающий с SSL должен иметь сертификат.
Для клиента это чаще всего опционально. В отдельных случаях, для проверки личности клиента, наличие у него сертификата является необходимым.