[英]SSL in node.js express server running but not working
我所擁有的是針對域名sat的webodo.in的Commodo Positive SSL SHA-2證書
我有http://namecheap.com提供給我的三個文件
webadd_in.crt
webadd_in.p7b
webadd_in.ca-bundle
我的main.js文件
var express = require('express');
var fs = require('fs');
var app = express();
var bodyParser = require("body-parser");
var https = require("https");
app.use(bodyParser.urlencoded({ extended: false }));
var config = {
key: fs.readFileSync('/etc/ssl/ssl.key/webadd_in.in.key'),
cert: fs.readFileSync('/etc/ssl/ssl.crt/webadd_in.ca-bundle') //insert the the .ca-bundle file here
};
var port = 443;
app.set('port', port);
require('./routes')(app);
var server = https.createServer(config, app).listen(port, function(){
console.log("Express server listening on port " + port);
});
我的代碼運行,但是沒有任何輸出。 沒有錯誤,沒有任何警告。 如果我刪除ssl部分並更改端口,它將起作用
我在這台服務器上有apache,但是我有a2dismod ssl,端口443確實是免費的
我也想知道是否可以在443以外的端口上運行此節點服務器,以便可以像這樣https://webadd.in:3030/進行訪問。
好的,如果您最終遇到這種情況,這里是可能的原因和解決方案。
注意:為了保持格式正確,我將鏈接和命令放在最后。
我由於鏈證書中的某些格式錯誤而陷入困境,該錯誤通過多余的空格來解決。
一些命令和資源
cat domain.crt COMODO_DV_SHA-256_bundle.crt >> domain_cert_chain.crt
命令cat domain.crt COMODO_DV_SHA-256_bundle.crt >> domain_cert_chain.crt
注意:在node.js目錄中創建一個index.html文件(可以為空白)。 將apache配置為僅在localhost的端口8080上運行將節點配置為僅在localhost的端口3030上運行重啟apache節點和nginx nginx反向代理指南https://www.digitalocean.com/community/tutorials/how-to-configure-nginx -as-A-反向代理換apache的
server { listen 80; listen 443; ssl off; server_name domain.in; ssl_certificate /etc/nginx/ssl/nginx_bundle.crt; ssl_certificate_key /etc/nginx/ssl/domain_in.key; root /var/www/html/; index index.php index.html index.htm; server_name domain.in; location / { try_files $uri $uri/ /index.php; } location ~ \\.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } location ~ /\\.ht { deny all; } } server { listen 3035; listen 443; ssl on; server_name domain.in; ssl_certificate /etc/nginx/ssl/nginx_bundle.crt; ssl_certificate_key /etc/nginx/ssl/domain_in.key; root /var/www/domainnodeapi/; index index.html index.htm; access_log /var/log/nginx/nginx.vhost.access.log; error_log /var/log/nginx/nginx.vhost.error.lo; client_max_body_size 10G; location / { proxy_pass http://127.0.0.1:3030; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffering off; } }
sudo nginx -s重新加載
sudo服務nginx重啟
sudo服務apache重新啟動
使用pm2作為節點
如果您遇到錯誤
nginx:[emerg] PEM_read_bio_X509_AUX(“ / etc / nginx / ssl / domain.crt”)失敗(SSL :)
這是因為括號中的文件。 檢查格式錯誤。
如果出現openssl錯誤/版本未知/找不到文件:
sudo apt-get purge openssl libssl-dev sudo apt-get install openssl libssl-dev
希望這對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.