树莓派Node-RED部署Google Action时遇PEM证书读取错误求助
解决Node-RED Google Action节点的SSL证书读取错误(error:0906d06c)
我之前在树莓派上配置Node-RED的Google Action节点时,也碰到过一模一样的错误提示,这个问题基本都和证书文件的格式、路径或者权限有关,给你几个实用的排查步骤:
确认证书转换的正确性
其实.crt和.key本质上很多时候就是PEM格式的文件,只是扩展名不同。如果你是用OpenSSL转换的,确保用对了命令:- 把PEM证书转成CRT(保证输出为PEM编码):
openssl x509 -in Certificate.pem -out certificate.crt -outform PEM - 把PEM私钥转成KEY:
openssl rsa -in privatekey.pem -out private.key -outform PEM
别用
DER格式输出,Node-RED的这个节点大概率只认PEM编码的文件。- 把PEM证书转成CRT(保证输出为PEM编码):
检查证书文件的头部尾部标记
错误提示里的no start line就是说节点找不到PEM文件的起始标记,打开你的.crt和.key文件看一下:- 证书文件必须以
-----BEGIN CERTIFICATE-----开头,-----END CERTIFICATE-----结尾 - 私钥文件必须以
-----BEGIN PRIVATE KEY-----或者-----BEGIN RSA PRIVATE KEY-----开头,对应结尾标记收尾
如果没有这些标记,或者标记写错了(比如少了横线),肯定读不出来。
- 证书文件必须以
核对文件路径与权限
- 配置节点时尽量用绝对路径(比如
/home/pi/ssl/certificate.crt),避免相对路径带来的工作目录问题 - 给证书文件设置正确的权限,让Node-RED进程(通常是
pi用户)能读取:chmod 644 /path/to/your/certificate.crt /path/to/your/private.key
- 配置节点时尽量用绝对路径(比如
尝试直接重命名原PEM文件
有些节点只是对扩展名有要求,内容还是认PEM格式。你可以直接把Certificate.pem改名为certificate.crt,privatekey.pem改名为private.key,不用转换,直接配置到节点里试试,说不定就能解决问题。验证证书与私钥的配对性
用OpenSSL命令确认证书和私钥是配对的,避免用错文件:# 提取证书的模值并MD5哈希 openssl x509 -noout -modulus -in certificate.crt | openssl md5 # 提取私钥的模值并MD5哈希 openssl rsa -noout -modulus -in private.key | openssl md5两个命令输出的哈希值必须完全一致,说明证书和私钥是配对的。
内容的提问来源于stack exchange,提问作者iamresearch
相关产品推荐
相关产品推荐

