Управление сертификатом HTTPS, подписанным на IIS в Express для Prod - PullRequest
0 голосов
/ 07 февраля 2020

Как управлять сертификатами API (HTTPS) в DEV против PROD в express в среде узла / angular, развернутой в Windows IIS? Я видел упоминания о переписываниях прокси, но я не уверен, как они управляются на express стороне.

Я знаю в PROD, IIS и перезаписи в web.config помогают управлять сертификатом для внешнего интерфейса, но большинство уроков, которые я вижу для https на express, требуют жесткого кодирования самозаверяющего сертификата и включения его в сборку. В PROD у меня есть официальный подписанный сертификат на сервере, который я буду использовать на порту 8443, и не уверен, как это изменит код, см. Ниже:

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = process.env.PORT || 8443;

app.get('/', (req, res) => {
res.send("IT'S WORKING!")
})

const httpsOptions = {
    key: fs.readFileSync('./security/cert.key'),
    cert: fs.readFileSync('./security/cert.pem')
}
const server = https.createServer(httpsOptions, app)
    .listen(port, () => {
    console.log('server running at ' + port)
 })

В отдельном, но связанном примечании, как работает мой API в Angular изменить, чтобы вызвать внутренний API для Dev против PROD. Я думаю, что-то вроде этого, что IIS будет перенаправить в домен PROD?

private API_URL: string = 'https://localhost:8443/api/';

1 Ответ

0 голосов
/ 06 марта 2020

Я видел упоминания о переписываниях прокси, но я не уверен, как им управлять на express стороне.

Не нужно управлять на стороне express , Express не нужно знать о сертификатах, которые вводит IIS.

В PROD у меня есть официальный подписанный сертификат на сервере, который я буду использовать на порту 8443, и не уверен, как это изменит код

Express не требует сертификата в prod, с этим справляются привязки IIS. Таким образом, на сервере. js код включает только httpsOptions, если он находится на dev, и вставляет самозаверяющий сертификат.

В отдельном, но связанном примечании, как моя служба API в Angular меняется на вызов бэкэнд API для Dev против PROD. Я предполагаю что-то вроде этого, что IIS будет перенаправлять в домен PROD?

Angular CLI должен предоставить вам папку Environment с файлами environment.prod.ts и environment.ts, которые будут заменены значения переменных, которые они хранят в зависимости от типа сборки. Просто добавьте переменную в обоих для разных URL-адресов для express для вызова при отправке запросов. Ваш URL-адрес продукта не будет localhost, а вместо этого должен быть реальным URL-адресом, к которому пользователь получит доступ в рабочей среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...