【问题标题】:Node.js self signed certificate is still showing as "not trusted" in my browserNode.js 自签名证书在我的浏览器中仍显示为“不受信任”
【发布时间】:2020-04-09 16:01:39
【问题描述】:

我正在运行一个 Node.js 服务器,我正在尝试在本地托管此服务器,但没有遇到任何 SSL 错误。

这是我为创建证书所做的。我在 Visual Studio Code 中打开终端并输入以下内容:

$ openssl req -nodes -new -x509 -keyout server.key -out server.cert

这在我的当前目录中创建了一个 .cert 和一个 .key 文件。

接下来,在我的 app.js 文件中,我添加了这个:

https.createServer({
  key: fs.readFileSync('./server.key'),
  cert: fs.readFileSync('./server.cert')//,
  //passphrase: ''
}, app)
.listen(3000);

然后我在终端窗口中运行命令 node app.js 来启动 Node.js 服务器。

然后我访问了https://localhost:3000/ 并得到以下信息 - 注意“不安全” - 这就是我想要摆脱的:

此时,我进行了一些谷歌搜索,发现导出此证书并直接导入 Chrome 可能会有所帮助。我通过单击“不安全”按钮并单击证书来做到这一点:

然后,点击详细信息和“复制到文件”:

然后,我在下一个屏幕上单击“下一步”并选择DER encoded binary X.509 (.CER)

我点击了下一步并将导出的证书命名为 serverMike.cer:

然后,我点击下一步并完成:

导出成功:

最后,我在 Chrome 设置中导入这个导出的证书,然后选择“受信任的根证书颁发机构”作为放置这个证书的位置:

然后我单击下一步并完成。我关闭了 Chrome 并重新打开它,访问了 https://localhost:3000 并收到相同的“不安全”消息。是不是我做错了什么?

【问题讨论】:

    标签: node.js ssl


    【解决方案1】:

    第 0 步:这不是编程问题

    第 1 步:如果您没有明显抑制错误,您应该看到“不安全”错误页面以前说 NET::ERR_CERT_AUTHORITY_INVALID,现在说 NET::ERR_CERT_COMMON_NAME_INVALID,如果您点击在 Advanced 上它说“此服务器无法证明它是 [域];它的安全证书没有指定主题备用名称。”

    第二步:见
    https://serverfault.com/questions/845766/generating-a-self-signed-cert-with-openssl-that-works-in-chrome-58
    https://serverfault.com/questions/880804/can-not-get-rid-of-neterr-cert-common-name-invalid-error-in-chrome-with-self
    https://security.stackexchange.com/questions/89319/creating-my-own-ca-for-an-intranet https://security.stackexchange.com/questions/172440/generate-x509-err-cert-common-name-invalid
    https://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-the-command-line
    https://security.stackexchange.com/questions/113484/followup-to-one-liner-to-create-cert-request-with-san
    Chrome accept self-signed localhost certificate

    顺便说一句:由于这是本地的,因此您无需在导入之前从浏览器中导出证书。如果您从 openssl req ... -x509 ... 创建带有扩展名 .cer.crt 的证书,或者以这种方式重命名或复制它,您只需双击然后导入到 TrustedRoots。或者对于 any 名称,您可以运行 MMC 并选择证书,或者直接运行 certmgr.msc,然后从那里导入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 2018-04-16
      • 2012-04-23
      • 2017-04-21
      相关资源
      最近更新 更多