我正在尝试使用 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)
最佳答案
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/