You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 7使用Let's Encrypt证书出现bad decrypt错误的解决办法

解决Angular 7启动SSL时error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt错误

我之前在配置Angular项目用Let's Encrypt证书启动开发服务器时,也碰到过一模一样的问题!咱们从几个最常见的原因入手解决:

1. 确认证书与密钥的格式及正确性

Let's Encrypt的证书文件和密钥有特定要求,很容易在这里踩坑:

  • 证书文件要使用完整链:别直接用Let's Encrypt生成的cert.pem,改用fullchain.pem(你可以把它重命名为certificate.crt)。Angular的开发服务器需要完整的证书链才能正确验证证书,单独的证书文件可能会导致解析失败。
  • 密钥不能有密码保护:如果你的certificate.key设置了密码(Let's Encrypt默认生成的密钥是无密码的,但如果是你自己加密过的),Node.js的SSL模块无法自动解密,就会抛出这个错误。你可以用OpenSSL去掉密码:
    openssl rsa -in ./ssl/certificate.key -out ./ssl/decrypted.key
    
    之后启动命令换成用解密后的密钥:
    ng serve --host 0.0.0.0 --disable-host-check --ssl true --ssl-cert ./ssl/fullchain.crt --ssl-key ./ssl/decrypted.key
    

2. 解决Node.js版本兼容性问题

Angular 7对应的Node.js官方推荐版本是8.x或10.x,如果你用的是Node.js 12+(尤其是17及以上版本),默认的加密算法套件会和旧版Angular的开发服务器不兼容。这时候需要设置环境变量启用旧的加密提供者:

  • Windows(命令提示符):
    set NODE_OPTIONS=--openssl-legacy-provider
    ng serve --host 0.0.0.0 --disable-host-check --ssl true --ssl-cert ./ssl/certificate.crt --ssl-key ./ssl/certificate.key
    
  • Linux/macOS:
    export NODE_OPTIONS=--openssl-legacy-provider
    ng serve --host 0.0.0.0 --disable-host-check --ssl true --ssl-cert ./ssl/certificate.crt --ssl-key ./ssl/certificate.key
    

3. 检查文件路径与权限

  • 确保证书和密钥的路径没有拼写错误,Linux/macOS系统要注意大小写敏感,比如./SSL和./ssl是不同的路径。
  • 确认当前用户有读取证书和密钥文件的权限,必要时可以用chmod 644 ./ssl/certificate.crt ./ssl/certificate.key调整权限。

一般按照这几步操作,这个错误就能解决啦!

内容的提问来源于stack exchange,提问作者Cris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:53:21