使用Letencrypt和Node.js设置SSL

时间:2019-04-02 08:41:00

标签: node.js angular apache ubuntu-18.04

这是我第一次设置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不起作用。有什么帮助吗?预先感谢

0 个答案:

没有答案
相关问题