我正在使用以下代码在我的网站上安装SSL证书:
const express = require('express');
const path = require('path');
const app = express();
const fs= require('fs');
let privateKey = fs.readFileSync('certificate/x.key', 'utf8');
let ca = fs.readFileSync('certificate/x.crt', 'utf8');
let certificate = fs.readFileSync('certificate/x.crt', 'utf8');
let credentials = { key: privateKey, cert: certificate, ca: ca };
const http = require('http');
const https = require('https');
app.use(express.static(path.join(__dirname, 'build')));
app.get('/*', function(req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
let httpsServer = https.createServer(credentials, app);
httpsServer.listen(443);
这是一个React应用,我正在通过Node.js为其提供服务。
当我在Chrome或Microsoft Edge上打开网站时,它显示该连接为安全,加密和有效,但是当我在firefox上打开它时,则表明该连接不安全。
可能是什么问题?
答案 0 :(得分:1)
如果您的中间证书包含多个块,则应将它们拆分为不同的文件,并以ca参数的形式将它们作为数组逐一发送:
let credentials = { key: privateKey, cert: certificate, ca: [
fs.readFileSync('certificate/x_1.pem', 'utf8'),
fs.readFileSync('certificate/x_2.pem', 'utf8'),
fs.readFileSync('certificate/x_3.pem', 'utf8'),
[...]
] };
答案 1 :(得分:0)
如果您的证书在其他浏览器上看起来正确并且根本没有出现在Firefox中,则几乎可以肯定的原因是Firefox仍显示缓存的证书。
只需清除Firefox的SSL状态,您就应该做好了准备:
答案 2 :(得分:0)
我建议您输入站点地址here并对其进行测试。
例如,如果您看到未提供完整链的问题,您可以创建所有证书的完整链并将其PEM编码为单个证书文件,然后将其作为证书文件提供。测试后,您甚至可以直接在此处下载完整的链。
为我提供了完整的链修复了好几次,在chrome中一切正常,但在其他情况下却没有。