Как получить действительный сертификат SSL для NodeJS Express API, работающего на виртуальной машине Windows на VPS-сервере? - PullRequest
0 голосов
/ 21 декабря 2018

Я настраиваю веб-API на основе NodeJS и хочу поддерживать HTTPS.Где я могу получить действительный сертификат SSL?

У меня есть виртуальная машина Windows, работающая на заданном IP-адресе, на котором размещен API-интерфейс NodeJS для определенного порта.Все работает нормально через HTTP, но когда я изменяю его на HTTPS, я получаю эту ошибку: ERR_CERT_COMMON_NAME_INVALID

https://i.ibb.co/cxvmZBf/Capture.png (Извините, не хватает очков репутации)

Я перепробовал много подходоввключая использование действующего сертификата, связанного с поддоменом, и перенаправление его на адрес виртуальной машины.Кроме того, я создал DNS Тип A и настроил данный IP-адрес.Затем с помощью Let's Encrypt Certbot я попытался сгенерировать действительный не подписанный сертификат, но обнаружил неокончательные ошибки из-за несовместимых настроек IP.

Можно ли купить сертификат для данного IP?Если да, то где?Какие еще подходы я могу попробовать?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вы можете использовать этот инструмент для создания самозаверяющего сертификата и включения в свое приложение.Или же вы можете скопировать команду и сгенерировать сертификаты самостоятельно, используя openssl cli.

Пример команды для создания собственного сертификата со стандартом X.509:

openssl req -new -newkey rsa:2048 -x509 -nodes -keyout key.pem -out certificate.pem -sha256 -days 750 -subj "/C=IN/ST=/L=/O=TCS/OU=CTO/CN=YOURDOMAIN" -config <(
cat <<-EOF
[req]
default_bits = 2048
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
[ req_ext ]
basicConstraints=CA:FALSE
keyUsage=digitalSignature,keyEncipherment
extendedKeyUsage=serverAuth,clientAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = ALTERNATEDNS1
DNS.2 = ALTERNATEDNS2
EOF
)

Вы также можетеперейти к проверенному сертификату, выданному различными центрами сертификации (CA). Для получения дополнительной информации нажмите здесь

0 голосов
/ 21 декабря 2018

Как мы видим из ошибки браузера, в настоящее время ваше приложение не имеет настроенного сертификата сервера.

Чтобы получить сертификат, вы можете сгенерировать CSR с помощью такого инструмента, как openssl cli или онлайн-инструмента, отправить его в известный центр сертификации и использовать подписанный сертификат в качестве сертификата сервера для сервера.NodeJS API.

В документации NodeJS описано, как настроить сертификаты сервера (файлы .pem):

// curl -k https://localhost:8000/
const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello world\n');
}).listen(8000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...