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

使用Let’s Encrypt证书运行create-react-app开发HTTPS服务报错求助

解决create-react-app开发模式下Let’s Encrypt证书密钥不兼容问题

问题原因

Let’s Encrypt默认颁发的是ECDSA类型密钥的证书,而create-react-app依赖的webpack-dev-server旧版本对ECDSA密钥的支持存在兼容性问题,导致出现error:03000096:digital envelope routines::operation not supported for this keytype错误。

解决方案

方案一:生成RSA类型的自签证书(开发环境推荐)

开发环境下可以用OpenSSL生成兼容的RSA证书,步骤如下:

  1. 打开终端,执行以下命令生成证书和密钥:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
  1. 将生成的key.pem和cert.pem替换到你的./HTTPS目录下
  2. 保持.env文件的配置不变,重新启动React应用

方案二:自定义webpack-dev-server配置以支持ECDSA密钥

如果坚持使用Let’s Encrypt的证书,需要修改webpack-dev-server的配置:

  1. 安装react-app-rewired工具(无需eject项目):
npm install react-app-rewired --save-dev
  1. 在项目根目录创建config-overrides.js文件,添加以下内容:
const fs = require('fs');
const path = require('path');

module.exports = function override(config, env) {
  if (env === 'development') {
    config.devServer = {
      ...config.devServer,
      https: {
        key: fs.readFileSync(path.resolve(__dirname, './HTTPS/key.pem')),
        cert: fs.readFileSync(path.resolve(__dirname, './HTTPS/cert.pem')),
        minVersion: 'TLSv1.2'
      }
    };
  }
  return config;
};
  1. 修改package.json中的启动脚本:
    将原有的"start": "react-scripts start"替换为:
"start": "react-app-rewired start"
  1. 重新启动React应用

方案三:升级Node.js版本

旧版本Node.js对ECDSA密钥的支持不完善,升级到16.x及以上的LTS版本后,可能无需修改配置即可正常使用Let’s Encrypt的证书。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:00:42