即使安装了SSL证书,也无法在Firefox上保护网站的安全

时间:2019-01-24 08:48:09

标签: node.js firefox amazon-ec2 ssl-certificate

我正在使用以下代码在我的网站上安装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上打开它时,则表明该连接不安全。 Valid in Chrome Not working in Firefox

可能是什么问题?

3 个答案:

答案 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状态,您就应该做好了准备:

  • 在“历史记录”菜单上,单击“清除最近的历史记录”。出现“清除所有历史记录”对话框。
  • 在“清除时间范围”列表框中,选择“所有”。
  • 选中“活动登录名”复选框。
  • 点击立即清除。

来源: https://www.a2hosting.co.uk/kb/getting-started-guide/internet-and-networking/clearing-a-web-browsers-ssl-state#Mozilla-Firefox

答案 2 :(得分:0)

我建议您输入站点地址here并对其进行测试。

例如,如果您看到未提供完整链的问题,您可以创建所有证书的完整链并将其PEM编码为单个证书文件,然后将其作为证书文件提供。测试后,您甚至可以直接在此处下载完整的链。

为我提供了完整的链修复了好几次,在chrome中一切正常,但在其他情况下却没有。