症状
加密操作以 ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE 或 like no start line 的 PEM 解析错误失败。密钥可能是操作所需的错误类型,例如把公钥传给 createSign,或文件本身不是合法 PEM。这些错误很精确:模块在尝试操作前就拒绝了密钥,因此修复点在于密钥的类型、格式与用途,而非被签的数据。
诊断
用 openssl pkey -text 查看密钥类型与公私属性;搜索代码中 sign/verify 的密钥用法;检查 PEM 的 BEGIN/END 头尾是否完整。
openssl pkey -in key.pem -noout -text | head
根因
加密操作收到的密钥类型或格式有误,例如签名却给了公钥、或给了非 PEM 文件,加密模块在操作前即拒绝。
修复
让密钥与操作匹配:签名与解密用私钥,验签与加密用公钥。确保文件是含正确头尾的完整 PEM,按正确编码加载,并选择与密钥类型兼容的算法。把 openssl 校验纳入工具链。
验证
重新执行签名与验证,确认合法消息通过、被篡改消息验证失败。篡改检查能证明密钥与算法正确,而不只是调用返回了。
常见陷阱
为绕过错误而把密钥格式随意转换可能破坏安全属性;应使用标准工具导出正确的 PEM/DER。