两台嵌入式设备间实现HTTPS通信的可信证书申请及配置问题
问题解答
1 该应用场景是否可以生成适配的可信证书
可以。
公网CA机构确实无法为私有网段的固定IP地址签发公开可信证书,但你的场景属于封闭私有网络,不需要公网信任,完全可以通过自建私有根CA的方式生成符合要求的可信证书。该方案是工业级嵌入式设备内部通信的通用标准方案,安全性远高于临时自签名证书,可直接用于生产环境。
2 具体实现操作流程
2.1 前置准备
- 确认服务端的固定IP地址(嵌入式AP默认常用192.168.4.1,可根据你的实际配置调整)
- 准备一台普通操作电脑,安装好OpenSSL工具
2.2 生成私有根CA证书(仅需生成一次)
根CA是整个信任体系的根,后续所有服务端证书都由它签发,客户端仅需信任该根证书即可:
- 生成根CA私钥:
openssl genrsa -out rootCA.key 2048(嵌入式设备性能有限,2048位长度已满足安全要求,无需使用更高位数) - 生成根CA证书,有效期可设为10年:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.crt填写信息时仅需自定义Common Name(可填写项目名称),其余字段可直接留空回车跳过
2.3 生成并签发服务端证书
- 生成服务端私钥:
openssl genrsa -out server.key 2048 - 生成服务端证书签名请求(CSR):
openssl req -new -key server.key -out server.csr此处Common Name必须填写服务端的固定IP地址,其余字段可留空 - 新建SAN扩展配置文件
san.ext,用于添加IP地址校验字段,新版TLS栈强制要求该字段否则会校验失败,文件内容如下:
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] IP.1 = 192.168.4.1
将文件中192.168.4.1替换为你的服务端实际固定IP即可
- 使用根CA签发服务端证书,有效期可按设备更新周期设为1-3年:
openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 1095 -sha256 -extfile san.ext
2.4 部署到设备
- 服务端:将生成的
server.key、server.crt配置到HTTP服务的SSL配置项中,不同HTTP框架配置方式类似,参考对应框架的SSL配置文档即可 - 客户端:将
rootCA.crt预装到客户端的信任证书存储中,或在发起HTTPS请求时指定信任该根证书,禁止跳过证书校验步骤
注意事项
- 根CA私钥请妥善离线保管,不要部署到任何业务设备上,仅在需要签发新的服务端证书时使用
- 后续服务端证书到期,直接用现有根CA签发新证书即可,客户端无需更新任何配置
- 如需新增多个服务端设备,直接用根CA签发对应IP的新证书即可,客户端⽆需修改信任配置
内容的提问来源于stack exchange,提问作者mrsulaj
相关产品推荐
相关产品推荐

