Я только начинаю разбираться в вопросах безопасного взаимодействия программ, шифрования и т.д. Пока пытаюсь понять смысл в общем, схему...
Необходимо обеспечить защищенную от прослушивания и несанкционированного доступа связь в клиент-серверном приложении. Планируется, что клиент и сервер будут взаимодействовать с помощью WebSocket`ов. Нашел, что в таких случаях используется протокол TLS. Одной из проблем, которые решает этот протокол, является безопасный обмен ключами между удаленными клиентом и сервером по открытому каналу. В
википедии вычитал, что при установке соединения важным участником является удостоверяющий центр сертификации. Собственно, надежность всей этой схемы основана на доверии к этому удостоверяющему центру, за что удостоверяющий центр берет деньгу.
Дальше я буду использовать термин цифровой сертификат. Не уверен, что я понимаю его правильно, поэтому напишу как я понимаю его. Цифровой сертификат - это открытый ключ+ссылка на удостоверяющий центр. Плюс сертификат подписан удостоверяющим центром (зашифрован приватным ключом удостоверяющего центра, а публичный ключ удостоверяющего центра общеизвестен: видимо в виде подписанного собой же сертификата).
В моем случае я имею доступ к клиенту и к серверу. Удостоверяющий центр сертификации это, я так понимаю, некая программа. Я, так понимаю, я могу запустить ее на своем сервере (ну или на другом каком, но в данном случае на том же).
Теперь вопросы:
1. Насколько понимаю, при настройке веб-сервера в конфигах указывается каким приватным ключом шифровать и какой сертификат отдавать. Как указать браузеру(клиенту), что нужно для общения
вон с тем сервером использовать
вот этот сертификат и как передать серверу сертификат?
2. Знаю в браузере можно настроить список доверенных серверных сертификатов. Соответственно, как настроить на веб-сервере список доверенных клиентских сертификатов? И как настроить доступ (с этим сертификатом можно только вот тут смотреть, а с этим еще и вот тут и писать еще что-нибудь)?
Прошу прощения, если напутал с терминами или вообще тут каша написана. Распутайте меня, чтоб больше ясности появилось. Спасибо.