node.js - 将 openssl 证书加载到 Node 中

标签 node.js ssl openssl certificate ssl-certificate

当我尝试读取我的自签名 SSL 证书时, Node 一直给我这个错误

_tls_common.js:67
  c.context.setCert(options.cert);
            ^

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
    at Error (native)
    at Object.createSecureContext (_tls_common.js:67:17)
    at Object.TLSSocket._init.ssl.onclienthello.ssl.oncertcb.exports.connect (_tls_wrap.js:1017:46)
    at Socket.<anonymous> (/usr/blinkchannelserver/bundle/programs/server/npm/node_modules/pg/lib/connection.js:106:23)
    at Socket.g (events.js:260:16)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at readableAddChunk (_stream_readable.js:153:18)
    at Socket.Readable.push (_stream_readable.js:111:10)
    at TCP.onread (net.js:540:20)

这应该是什么格式?

在我的服务器上,我通过运行创建了一个客户端 key 和 csr

openssl req -new -key ~/.postgresql/postgresql.key -out /tmp/postgresql.csr

我使用我的服务器 key 将 csr 转换为使用我服务器的证书和 key 的证书

openssl x509 -req -in /tmp/postgresql.csr -CA server.cert -CAkey server.key -out /tmp/postgresql.cert -CAcreateserial

当我尝试丢失 postgresql.cert 时,出现上述错误

运行 x509:

openssl x509 -inform PEM -in postgresql.cert

给我一​​个合理的输出:

-----BEGIN CERTIFICATE-----
MIIDHDCCAgQCCQC8AZE7dSSPZDANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJH
QjEPMA0GA1UEBwwGTG9uZG9uMR4wHAYDVQQKDBVEb3VnbGFzLVdoaXRlICYgR29z
...
-----END CERTIFICATE-----

最佳答案

当文件使用非 Unix 行尾编码时,通常会发生这种情况。您可以打开他的文件,它会在行尾显示一些奇怪的字符,例如“^M”。

将文件转换成unix格式OpenSSL就能处理了。尝试运行一些“sed”命令(取决于编码)或像“dos2unix”这样的专用工具'

sed 's/^M$//' infile.txt > outfile.txt

sed 's/\r$//' infile.txt > outfile.txt

关于node.js - 将 openssl 证书加载到 Node 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44197723/

相关文章:

javascript - 在 Mongoose 模式中将一个数组写入另一个数组中

javascript - 仅接受 socket.io 中客户端发出的第一个事件并丢弃重复事件

google-app-engine - 在 App Engine 柔性环境自定义运行时强制使用 SSL

openssl - 请告诉我如何在 x.509 中打印扩展名的值

c# - 如何将文本字符串从 Base64 解码为字节数组,以及如何在不损坏数据的情况下获取此字节数组的字符串属性

javascript - Nodejs Sequelize中循环获取异步数据

javascript - 将自定义类型列表传递给 GraphQL 突变

php - SSL 在 Windows 上的 PHP5.6 中不起作用

linux - 尽管尝试了来自 Stackoverflow 的不同修复程序,但 crontab 仍无法正常工作

Java DESede 加密,OpenSSL 等效