node.js - https.createServer 错误 : SSL_CTX_use_certificate: ca md too weak

标签 node.js express ssl https openssl

我正在尝试使用 express 在 node.js 中实现对等证书验证。 在生产中我收到错误:EE 证书 key 太弱。

如何更改它以支持弱键? 我不想在代码级别忽略它,因为如果我这样做,它根本不会检查 CA。 在开发服务器中,如果我删除匹配的 CA 证书,我会收到 UNABLE_TO_VERIFY_LEAF_SIGNATURE,而在生产服务器中,我会收到“EE 证书 key 太弱”——它根本不会检查它。

在开发服务器中它工作正常,但在生产服务器中我收到错误。

我无法在客户端设备上更改证书,所以我必须支持弱 key 。

https.createServer({
    key: getFile(config.get("ssl_certificate.key")),
    cert: getFile(config.get("ssl_certificate.cert")),
    ca: [
        getCACertFile('ca-crt.pem'), //some certificates
    ],
    requestCert: true,
    rejectUnauthorized: false
},app)

在 req.socket.authorizationError 中,我希望收到 null。 在开发服务器中我收到 null,但在生产服务器中我收到“EE 证书 key 太弱”

标准错误:

error: failed to start server: Error: error:140AB18E:SSL routines:SSL_CTX_use_certificate:ca md too weak
    at Object.createSecureContext (_tls_common.js:135:17)
    at Server (_tls_wrap.js:873:27)
    at new Server (https.js:62:14)
    at Object.createServer (https.js:85:10)

最佳答案

Node v10.0.0 Release News

Dependencies
V8 has been updated to 6.6. [9daebb48d6]
OpenSSL has been updated to 1.1.0h. [66cb29e646]

如果您使用的是 Node.js>=10.0.0,如果证书是由 sha1 或 md5 加密的,它将引发异常。

  • 生成新证书 encrypted by sha256将解决服务器上的问题。

  • 但在您的情况下,由于证书已用于设备连接到服务器,您可以简单地 use Node.js<10.0.0 (例如:v8.x)启动服务器。

此外,建议使用nvm来控制Node.js的版本。

nvm use v8.x.x
node server.js

关于node.js - https.createServer 错误 : SSL_CTX_use_certificate: ca md too weak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57456325/

相关文章:

javascript - 让 express.js 显示公用文件夹

javascript - Node.js、Express 和 Mongoose 提供多个静态文件

google-app-engine - 为 Google App Engine 转换 pfx 文件

ruby - Ruby 中的非阻塞 SSL 套接字协商。可能的?

node.js - Mongoose 验证错误

javascript - 路由和路由处理程序之间的函数未按预期执行

json - 从 Node Mongodb 模型填充 Google map 标记

node.js - 如何使用 Express 添加 MIME 类型

node.js - res.redirect ('back' ) 带参数

amazon-web-services - 使用 AWS (ec2) 主机激活 PositiveSSL - Namecheap