Я хочу надежно хранить закрытые ключи моих пользователей на отдельном сервере (назовем его B), и он используется для подписи и расшифровки информации. B хранит ключи в базе данных (postgres). Сервер A (общедоступный) отправляет информацию в B. В идеале B необходимо получить закрытый ключ, подписать токен с помощью информации и отправить его обратно в A. Вместо отправки закрытого ключа на A, что может быть проблемой безопасности (если сервер A скомпрометирован).
Мои варианты:
- веб-сокеты
- Запрос Https (https://nodejs.org/api/https.html#https_https_request_options_calling)
Вопросов:
- Есть ли другие варианты безопасного взаимодействия с двумя серверами?
- Если сервер B был на порту "7000", как я могу убедиться, что только сервер A может получить к нему доступ?
- Как HSM-сервер помогает в моем случае и как он взаимодействует с другими серверами (веб-сокет или https-запрос)?
Я мог бы просто выбрать простой маршрут и подключить базу данных сервера B к порту «7000» и выполнять запросы из A, но, как я уже сказал, это не так безопасно. Я слышал, что HSM обрабатывает / расшифровывает информацию и отправляет ее обратно, так что я могу делать что-то подобное с обычными серверами.
Спасибо, любая помощь будет оценена
ОБНОВЛЕНИЕ
@zaph ответил на вопросы 2 и 3.
Вопрос: Требуется ли серверу A выполнить запрос https и включить частный ip адрес сервера B, например https://203.0.113.25
? Затем сервер B будет использовать маршрутизатор API для обработки запроса. Однако ip не является DNS, поэтому он не будет работать из-за сертификатов. Итак, как серверы обмениваются данными, отправляют / получают данные?
Ссылка: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario3.html
https:/10.0.0.0/16
это правильно или мне нужно использовать другую технику? - person user6227254   schedule 06.08.2016