Я готовлю свое приложение http Angular / Express / Node и API для работы через порт 8443 https в рабочей среде, развернутой на IIS на windows сервере. В настоящее время мое приложение работает по протоколу https (8443) в prod с правильным сертификатом из параметра привязки сайта в IIS, но сервер express не отвечает правильно на вызовы API. (Может ли API и основное приложение использовать порт 8443 в PROD ?, в dev я использую 4200 и 8080). Обратите внимание, что порт 443 - это совершенно другое приложение, в настоящее время настроенное с использованием того же сертификата.
Практически каждый пример выполнения Express на HTTPS, который я могу найти, включает создание самоподписанного сертификата, упаковывающего сертификат в код, и передача относительного местоположения в качестве параметра express при создании. См. Включение HTTPS для express. js
Однако получить производственную информацию немного сложнее, тем не менее, большинство, похоже, упаковывают сертификат с кодом и обмениваются при сборке. / время выполнения через переменную среды.
Однако в моем случае IIS в работе имеет сертификат, который мне нужно использовать, и я не знаю его местонахождение. Как я могу указать express использовать этот сертификат? Возможно, используя переписать в web.config?
Вот мой сервер. js:
/* set up the server configuration */
const http = require('http');
var https = require('https');
const app = require('./app.js');
const port = process.env.PORT || 8080;
var httpServer = http.createServer(app);
var httpsServer = https.createServer(app);
httpServer.listen(port, '0.0.0.0');
httpsServer.listen(8443);
мой web.config на IIS:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect all requests" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
<!--<action type="Rewrite" url="/" />-->
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<verbs applyToWebDAV="false" allowUnlisted="true" />
</requestFiltering>
</security>
<modules>
<remove name="WebDAVModule"/>
</modules>
</system.webServer>
</configuration>