当前位置: 首页 > 知识库问答 >
问题:

为localhost创建受信任的自签名SSL证书(用于Express/Node)

濮阳奇逸
2023-03-14

尝试按照关于创建用于localhost的自签名证书的各种说明进行操作,大多数说明似乎是针对IIS的,但我尝试使用NodeJS/Express。它们都无法正常工作,因为在安装证书时,它不受信任。以下是我尝试失败的方法:

    null

编辑:在注释中建议问题是不受信任的证书根。我通过IE安装了证书,但它仍然不受信任。

共有1个答案

施慈
2023-03-14

上面的回答是部分的。我花了这么多时间让它工作,这是疯狂的。给我未来的自己注意,这里是你需要做的:

我用的是Windows 10和Chrome 65。Firefox表现良好--只需确认localhost为安全异常,它就能正常工作。Chrome不:

步骤1.在后端,创建一个名为security的文件夹。我们会在里面工作。

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = Country initials like US, RO, GE
ST = State
L = Location
O = Organization Name
OU = Organizational Unit 
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost

openssl req-x509-nodes-days 365-newkey rsa:2048-keyout cert.key-out cert.pem-config req.cnf-sha256

步骤4.然后,在security文件夹之外,在express应用程序中执行以下操作:(这是@Diego Mello的功劳)

backend 
 /security
 /server.js

server.js:

const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000

app.get('/', (req, res) => {
    res.send("IT'S WORKING!")
})

const httpsOptions = {
    key: fs.readFileSync('./security/cert.key'),
    cert: fs.readFileSync('./security/cert.pem')
}
const server = https.createServer(httpsOptions, app)
    .html" target="_blank">listen(port, () => {
        console.log('server running at ' + port)
    })

此时,我们已经完成了服务器设置。但浏览器应显示警告消息。

我们需要在Chrome/Windows证书存储中注册我们的自签名证书,作为CA受信任的证书颁发机构。(chrome也将此保存在windows中,)

第7步。转到“详细信息”面板,单击“复制文件”,然后在出现“证书导出向导”时,单击“下一步”,如下所示:

我们将导入刚刚在步骤8中导出完成的localhost.cer证书。

步骤11.单击browse,找到localhost.cer,保留默认值单击next多次--直到出现此警告,单击Yes。

 类似资料:
  • 问题内容: 我试图使用(java)密钥工具创建一个自签名证书,但是当我尝试使用它时,出现以下异常(有关完整异常,请参见底部)。 我知道我可以使用以下代码绕过此代码: (资源) 但是我对此解决方案不感兴趣,因为我认为这会造成安全漏洞。(如果我错了,请纠正我)。 谁能指出我正确的方向?我目前正在本地进行测试,因此很容易进行更改。我可以访问服务器代码,客户端代码和.keystore文件。 更新资料 我试

  • 使用`openssl x509-in cert.pem-noout-text查看证书会得到以下结果: 我知道有一些解决方法,包括禁用证书检查(或者只在本地的普通HTTP上运行API),但我真的很好奇,也很困惑为什么它不能在HTTPS上工作。非常感谢任何帮助。

  • 我想生成一个自签名SSL证书,并将其与Tomcat一起使用。 我怎么能这样呢?

  • “引发异常:System.dll中的'System.Net.WebException'” 其他信息:基础连接已关闭:无法为SSL/TLS安全通道建立信任关系。" 我已经为我的本地机器和当前用户将我的自签名证书添加/导入到Trusted RootCA,但我仍然收到上述异常。 你知道为什么我会这样吗。net还不接受我的证书吗?

  • 问题内容: 我正在使用具有多个唯一标识的从属进程的分布式应用程序,这些进程将通过启用SSL的套接字与主应用程序进行通信。该应用程序用Java编写。 我需要一些帮助来了解SSLSocket,或者更确切地说,是它们使用的证书。 我正在寻找的人可以告诉我我是否正确理解了证书链的基本工作原理,但是我也不会拒绝代码示例。 我想要一个服务器本身具有CA签名证书的设置,每个从属服务器都将获得由主应用程序创建的自

  • 我正试图将我的计算机配置为信任用于测试网站的自签名证书。然而,我在Firefox上遇到了一些问题。Chrome和IE都没问题。 我做了以下几点。 使用OpenSSL创建2048位pem rsa密钥和crt 从密钥和crt文件创建pfx文件 使用MMC将pfx导入到服务器上的个人证书存储中 将IIS配置为使用站点的证书 在客户端PC上 null 我还尝试将证书直接添加到Firefox的权限列表中。它