Создание клиента TLS в настольном приложении Electron - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь создать сервер узлов в TLS и создать клиент TLS в электронном виде для распространения в качестве настольного приложения для пользователей. Я могу добавить сертификаты на мой сервер TLS и запустить его.

Но как мне создать клиент, который требует, чтобы я вставил ключ и сертификат в опции для создания клиента.

tls.connect(8000, {
     key: fs.readFileSync('client-key.pem'),
     cert: fs.readFileSync('client-cert.pem')
})

Где я могу хранить файлы ключей и сертификатов? Должно ли оно быть в комплекте с загруженным электронным приложением?

Если ключ и сертификат могут быть прочитаны при распаковке приложения, не нарушает ли это безопасность?

Если ключ и сертификат хранятся в электронном виде bundle, он будет одним и тем же ключом и сертификатом для каждой загрузки приложения, разве он не ставит под угрозу безопасность?

Если ключ и сертификат хранятся в электронном пакете, как мне обновить сертификат (при изменении в сервер) после того, как пользователь загрузит приложение?

Я работал по этой ссылке https://github.com/nodejs/help/issues/253

Было бы здорово, если бы кто-то мог указать мне правильное направление.

Нам грозит блокировка веб-сокета для некоторых пользователей, поэтому мы пытаемся использовать дуплексный сокет TLS.

1 Ответ

0 голосов
/ 08 января 2020

Похоже, в моем случае мне не нужен сертификат клиента. Кажется, я могу аутентифицироваться с токеном авторизации или именем пользователя / паролем. Таким образом, TLS будет предлагать полное сокетное шифрование для предотвращения атаки «человек посередине».

Использование самозаверяющих сертификатов, как в примере выше, предоставление только сертификата CA может быть достаточным для его работы. PO C stage.

tls.connect(8000, {
 ca: fs.readFileSync('ca.crt')
})

Следующие материалы помогли мне прийти к выводу:

https://chat.stackoverflow.com/rooms/118168/discussion-between-castaglia-and-agm

{ ссылка }

https://crypto.stackexchange.com/a/406/75660

Тем не менее у меня нет ответов на оригинальные вопросы, которые я задал.

...