Мне нужно программно определить функции TLS клиента и базового хоста на основе Javascript.
Какой экземпляр веб-сервера (apache, IIS и т. Д.) Позволяет загружать разные конфигурации шифров SSL под разными именами хостов?
В этом случае все клиенты поддерживают SNI. Единственное отличие состоит в том, что я хочу сделать некоторые страницы доступными только для чтения под старыми шифрами и полным доступом при использовании современного браузера.
Я планирую попросить всех перейти на app.example.com, который отправит GET-запрос на «legacy.example.com», а также «secure.example.com». Если безопасное соединение завершится успешно, мы перейдем к этой конечной точке через перенаправление, вызванное javascript.
Какие технологии веб-серверов позволяют это сделать, и если я могу сделать это под IIS, это предпочтительнее.
Чтобы ответить на IIS часть вашего вопроса:
По умолчанию Windows имеет только один набор шифров и протоколов, поддерживаемых для ВСЕХ операций сервера (и другой для всех операций клиента). Итак, для IIS все веб-сайты на сервере поддерживают одни и те же шифры и протоколы.
Текущие включенные шифры хранятся в реестре. Итак, вы можете запросить информацию из реестра.
Вы также можете использовать IIS Crypto (https://www.nartac.com/Products/IISCrypto), чтобы увидеть включенные в данный момент шифрование и протоколы.