这是我第一次设置SSL,我选择使用letencrypt。
我有一个在https上运行的Angular应用程序,并且正在运行。我还具有在NodeJS中实现的REST API,并且一直坚持能够安全地提供它们。该服务正在端口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
};
使用https://IP:8443/api/访问API。路由是在NodeJS中实现的。
sites-enabled / 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不同的另一个目录中。
我不知道为什么提供API时https不起作用。有什么帮助吗?预先感谢