У меня есть приложение Java/Restlet, которое запускает два сервера. Один на указанном порту (отныне «сервер пользовательского интерфейса») и один на порте, случайно выбранном во время выполнения (далее «файловый сервер»), как на том же узле.Безопасный запрос AJAX на сервер со случайным портом
Предположим, что это приложение выполняется локально, а когда оно защищено, оно выполняется с самозаверяющим сертификатом. Файловый сервер имеет заголовки CORS, а сервер UI делает запросы HTTP Get к нему через jQuery AJAX.
Если приложение защищено SSL, я защищаю оба сервера с тем же хранилищем ключей и паролем. Однако на данный момент я больше не могу запускать запросы jQuery AJAX Get на файловый сервер с пользовательского интерфейса. Причина в том, что, хотя пользователь сказал своему браузеру сделать исключение для самоподписанного сертификата на сервере пользовательского интерфейса, они не имеют (и действительно не могут) сделать это для файлового сервера, так как он имеет случайную порт. Таким образом, запросы не переходят на файловый сервер.
В принципе, я понимаю, что современные браузеры помешают мне сделать запрос AJAX на сервер с недопустимым SSL-сертификатом, но я создаю оба сервера, и они используют один и тот же сертификат, и мне просто нужно убедить браузер, чтобы позволить мне сделать этот запрос
Хорошо, так что «не проходите» не было точной терминологии, которую я имел в виду. Во всяком случае, CN в сертификате моей тестовой среды фактически не имеет URL для своего CN вообще (это чье-то имя). Я не могу гарантировать, что мои клиенты будут иметь в своих сертификатах, мне нужно найти способ доверять запросу ajax независимо от действительности сертификата. – Nick
Часть действительности сертификата имеет решающее значение для SSL-квитирования, поэтому полностью ее не обходимо. Что вы подразумеваете под сертификатами клиентов - я думал, что это все сертификаты сервера. Клиент - это браузер - правильно? таким образом, JQuery Ajax.Возможно, здесь перепутана терминология. Попробуйте это - загрузите настоящий URL-адрес сервера пользовательского интерфейса в свой браузер и настоящий URL-адрес Файлового сервера в ваш браузер - если они оба загрузятся, ваши JQuery-вызовы Ajax должны работать. – Vic
Это веб-приложение в том смысле, что оно работает на сервере клиента, а интерфейс живет в веб-браузерах этих клиентов, но во многих случаях он используется полностью локально. В тех случаях, когда клиенты используют его во внутренней сети, некоторые из них используют самозаверяющий сертификат. Не существует «реального» UI-сервера или Файлового сервера, они порождаются этим приложением, работающим локально. И файловый сервер никогда не будет напрямую доступен пользователю, сервер UI должен тихо общаться с ним в фоновом режиме (через ajax). – Nick