gpt4 book ai didi

node.js - 将 SSL 证书添加到 Express 站点

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:53 26 4
gpt4 key购买 nike

我有一个小网站,我的任务是向其添加 ssl 证书。该网站使用此代码快速运行

#!/usr/bin/env node
var debug = require('debug')('one-west-end'),
app = require('../app'),
fs = require('fs'),
http = require('http'),
https = require('https'),
express = require('express');

var keyPath = '../ssl/key.key';
var certPath = '../ssl/cert.crt';
var caPath = '../ssl/cert.crt';

var port = 3000;

if (app.get('env') === 'production') {
port = 80;
}

if (fs.existsSync(keyPath) && fs.existsSync(certPath)) {
port = 443;

var options = {
key: fs.readFileSync(keyPath),
cert: fs.readFileSync(certPath),
};

var server = https.createServer(options, app).listen(port, function(){
console.log("Express server listening on port " + port);
});

} else {

var server = app.listen(port, function() {
console.log('Server started on port ' + port);
debug('Express server listening on port ' + port);
});

}

我没有创建必要的文件来创建文件,但这是 guide已被使用,本质上需要:

> openssl genrsa -out ~/domain.com.ssl/domain.com.key 2048`
> openssl req -new -key ~/domain.com.ssl/domain.com.key -out ~/domain.com.ssl/domain.com.csr`

我从购买证书的人那里收到的唯一东西是一个包含两个 .crt 文件的 zip 文件。一个的内容是:

-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----

还有一个

-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----

我在 express 文件的初始步骤中使用创建的 key 文件,但我不确定哪个文件是我的 CA,哪个文件是我的证书。我尝试了几种不同的变体,但我似乎总是在 chrome 中收到“此网页不可用”错误。

最佳答案

第一个文件可能是您的证书,第二个文件包含 CA 链。 Node 要求 CA 链中的每个证书在数组中单独传递。它不支持单个文件中的多个串联证书。

每个证书都需要放在自己的文件中(即ca1.crtca2.crtca3.crt)和单独阅读。

https.createServer({
key: fs.readFileSync('domain.com.key'),
certificate: fs.readFileSync('domain.com.crt'),
ca: [fs.readFileSync('ca1.crt'), fs.readFileSync('ca2.crt'), fs.readFileSync('ca3.crt')]
});

关于node.js - 将 SSL 证书添加到 Express 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com