将SSL证书添加到快速站点

我有一个小网站,我负责添加一个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); }); } 

我没有创build必要的文件来创build文件,但这是使用的指南 ,这本质上要求:

 > 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----- 

我正在使用在快速文件的第一步创build的密钥文件,但我不知道什么文件是我的CA,哪一个是我的证书。 我已经尝试了一些不同的变化,但我似乎总是得到一个“这个网页是不可用的”铬中的错误。

第一个文件可能是您的证书,第二个文件包含CA链。 节点要求将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')] });