【问题标题】:https.createServer error: SSL_CTX_use_certificate: ca md too weakhttps.createServer 错误:SSL_CTX_use_certificate:ca md 太弱
【发布时间】:2019-12-18 17:54:25
【问题描述】:

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

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

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

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

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 证书密钥太弱”

标准错误:

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.js express ssl https openssl


【解决方案1】:

您会立即想到典型 SSL 证书的两个方面:RSA 密钥长度和哈希算法。接受证书的方法可能会根据哪个方法较弱而有所不同。

检查Siganture Algorithm 下的证书属性。是sha1RSA吗?如果是这样,请搜索启用 SHA1 支持。

检查公钥。里面有多少位?是不是小于1024?然后搜索最小 RSA 密钥长度设置。

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 2014-10-11
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      相关资源
      最近更新 更多