【问题标题】:Loading openssl certificate into node将 openssl 证书加载到节点中
【发布时间】:2017-10-27 02:53:15
【问题描述】:

当我尝试读取我的自签名 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)

这应该是什么格式?

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

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

我使用我的服务器密钥将 csr 转换为使用我服务器的证书 nd 密钥的证书

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-----

【问题讨论】:

标签: node.js ssl openssl certificate ssl-certificate


【解决方案1】:

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

将文件转换为 unix 格式 OpenSSL 将能够处理它。尝试运行一些“sed”命令(取决于编码)或专用工具,如“dos2unix

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

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

【讨论】:

  • PEM 在RFC 1421, Privacy Enhancement for Internet Electronic Mail 中标准化。该标准在第 4.3.1 节 (p.10) 中调用了 CR-LF End-of-Line:“由字符对 分隔的文本行的长度不得超过 1000 个字符".当时的另外两个 RFC,SMTP 和 FTP,使用了相同的 End-of-Line。如果 Node.js 无法处理换行符对,那么它可能是 Node.js 中的一个错误。
猜你喜欢
  • 2013-11-11
  • 1970-01-01
  • 2012-04-05
  • 2017-03-12
  • 2013-01-11
  • 1970-01-01
  • 2017-02-03
  • 2011-09-03
  • 2018-11-03
相关资源
最近更新 更多