[英]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.