Я создал самоподписанный сертификат, используя openSSL, используя эту команду:
openssl req -x509 -out localhost.crt -keyout localhost.key \
-newkey rsa:2048 -nodes -sha256 \
-subj '/CN=localhost' -extensions EXT -config <( \
printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
У меня есть сервер Express / Node, использующий его через этот код:
https
.createServer(
{
key: fs.readFileSync("/Users/Me/.localhost-ssl/localhost.key"),
cert: fs.readFileSync("/Users/Me/.localhost-ssl/localhost.crt")
},
app
)
.listen(8080, () => console.log(env + " Server listening on port 8080"));
Я запустил этот сервери он работает через https.У меня есть клиент (на основе create-реагировать-приложение), работающий на той же машине, на другом порту, пытаюсь подключиться к этому серверу через порт 8080.
При первом запуске я доверял сертификату после того, как Chrome сказалчто он был недействительным и, как показано на рисунке ниже, мое клиентское приложение не жалуется на сертификат:
Однако клиент не можетполучить данные с сервера.Клиент показывает эту ошибку:
Вот моя фотография брелка, показывающая этот сертификат:
Чего не хватает?Нужно ли мне 2 сертификата в моей связке ключей?Потому что я использую клиент и сервер на одной машине.