[英]Setting up SSL with node.js
我在 GoDaddy 購買了 SSL 證書,我正在使用以下 node.js 服務器嘗試設置它:
var https = require('https'), // module for https
fs = require('fs'); // required to read certs and keys
var options = {
key: fs.readFileSync('../../ssl/example.com.key'),
cert: fs.readFileSync('../../ssl/example.com.crt'),
ca: fs.readFileSync('../../ssl/gd_bundle.crt'),
requestCert: true,
rejectUnauthorized: false
};
https.createServer(options, function (req, res) {
if (req.client.authorized) {
res.writeHead(200, {"Content-Type": "application/json"});
res.end('{"status":"approved"}');
} else {
res.writeHead(401, {"Content-Type": "application/json"});
res.end('{"status":"denied"}');
}
}).listen(443);
運行服務器后,我嘗試訪問https://example.com的網站,但我得到了
{"status":"denied"}
我想這工作正常,因為我收到了回復,但我認為我對 SSL 工作原理的理解是錯誤的。 我認為瀏覽器從服務器獲取證書,然后根據根證書對其進行身份驗證,即來自 GoDaddy。 所以我不應該得到
{"status":"approved"}
只是簡單地訪問https://example.com ?
所以我想我的問題是,我如何訪問https://example.com並獲得 {"status":"approved"}?
謝謝!
這是錯誤的:
ca: fs.readFileSync('../../ssl/gd_bundle.crt')
ca
需要是包含單個證書的字符串或緩沖區數組。 如果您提供捆綁包,則僅使用第一個證書,其余證書將被忽略。
另見: http : //nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
1.) 首先打開您的 cpanel 2.) SSL/TLS 3.) 管理 SSL 站點。 4.) 選擇要添加 ssl 的域 5.) 然后通過證書自動填充
你會在這里 crt 和 key 創建 2 個文件 domain.pem 和 domain.crt
將 crt 代碼放入 domain.crt 並將密鑰代碼放入 domain.pem 文件並將這兩個文件放在主根目錄中
const https = require('http');
const fs = require('fs');
const httpsOptions = {
key: fs.readFileSync('domain.pem'),
cert: fs.readFileSync('domain.crt'),
ca: fs.readFileSync('domain.crt'),
passphrase: '??'
}
https.createServer(options, function (req, res) {
if (req.client.authorized) {
res.writeHead(200, {"Content-Type":
"application/json"});
res.end('{"status":"approved"}');
} else {
res.writeHead(401, {"Content-Type":
"application/json"});
res.end('{"status":"denied"}');
}
}).listen(443);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.