Впервые я настраиваю SSL, я решил использовать letsencrypt.
У меня есть приложение Angular, работающее по https, и оно работает. У меня также есть API-интерфейсы REST, реализованные в NodeJS, и я застрял в возможности обеспечить их безопасным образом. Служба работает на порту 8443, и если я отключаю запрос сертификата, они работают (это объясняет, что не нужно вносить никаких изменений в код).
Код NodeJS выглядит следующим образом:
const privateKey = fs.readFileSync(<path_to_privkey.pem>, ‘utf8’);
const certificate = fs.readFileSync(<path_to_cert.pem>, ‘utf8’);
const ca = fs.readFileSync(<path_to_chain.pem>, ‘utf8’);
let activateHttps = true;
const credentials = {
key: privateKey,
cert: certificate,
ca: ca,
requestCert: activateHttps,
rejectUnauthorized: activateHttps
};
API доступны с https://IP:8443/api/. Маршрутизация реализована в NodeJS.
Конфигурация на сайтах с включенным / 000-default.conf выглядит следующим образом:
LoadModule ssl_module libexec/apache2/mod_ssl.so
<VirtualHost :>
ServerName
ServerAlias
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
DocumentRoot /var/www/html
ErrorLog {APACHE_LOG_DIR}/error.log CustomLog {APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
SSLEngine on
SSLCertificateFile <path_to_cert>
SSLCertificateKeyFile <path_to_key>
SSLCertificateChainFile <path_to_chain>
<Location /api>
ProxyPass https:/<ip>/:8443/api #tried redirect but not working! So I access with the IP
ProxyPassReverse https://<ip>:8443/api
Приложение NodeJS размещено в другом каталоге, отличном от /var/www/html.
.
Я не могу понять, почему https не работает при предоставлении API. Любая помощь? Заранее спасибо