news 2026/6/10 13:30:49

前后端HTTPS及证书配置完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前后端HTTPS及证书配置完整流程

前后端HTTPS及证书配置完整流程

mTLS双向认证请求测试

本文档详细记录前后端项目配置HTTPS协议、生成并部署证书、实现mTLS双向认证的全过程,适用于Vue3+Vite前端与NestJS后端架构(其他架构可参考核心逻辑)。配置完成后可实现前端与后端的安全HTTPS通信,并通过mTLS双向认证确保接口访问安全性。

一、前期准备

1.1 环境依赖

  • 操作系统:Windows/macOS/Linux(本文以macOS为例,Windows命令逻辑一致,需调整路径格式)

  • 工具:OpenSSL(用于生成证书,macOS/Linux默认自带,Windows需单独安装并配置环境变量)

  • 后端:NestJS(已初始化项目,需安装@nestjs/platform-express等核心依赖)

  • 前端:Vue3+Vite(已初始化项目,需安装axiosnode-forge等依赖)

  • 其他:终端/命令行工具、浏览器(Chrome/Firefox等)

1.2 核心概念说明

  • HTTPS:基于TLS/SSL的HTTP协议,通过证书验证服务器身份,加密传输数据

  • 根CA证书:自签证书的根证书,用于签发服务器证书和客户端证书,需导入系统/浏览器信任库

  • 服务器证书(server.crt/key):后端服务使用的证书,用于前端访问后端时验证后端身份

  • 客户端证书(client.p12):前端请求后端时携带的凭证,用于后端验证前端身份(mTLS双向认证核心)

  • mTLS:双向 TLS 认证,同时验证服务器和客户端身份,比单向HTTPS更安全

二、证书生成(核心步骤)

所有证书通过OpenSSL生成,按“根CA证书 → 后端服务器证书 → 前端客户端证书”的顺序生成,确保证书链完整。

2.1 生成根CA证书(用于签发其他证书)

  1. 创建根CA工作目录(统一管理证书文件)
mkdir-p/opt/ca/root cd/opt/ca/root

新建子目录(存放证书、私钥、请求文件等)

mkdir-p certs crl newcertsprivatechmod700private# 初始化证书索引文件和序列号文件 touch index.txt echo1000>serial`
  1. 创建根CA配置文件(my-ca.cnf)
[ca]default_ca=CA_default[CA_default]dir=/opt/ca/root certs=$dir/certs crl_dir=$dir/crl new_certs_dir=$dir/newcerts database=$dir/index.txt serial=$dir/serial RANDFILE=$dir/private/.rand default_days=3650default_md=sha256 policy=policy_strict[policy_strict]countryName=supplied stateOrProvinceName=supplied organizationName=supplied organizationalUnitName=optional commonName=supplied emailAddress=optional[req]default_bits=2048distinguished_name=req_distinguished_name x509_extensions=v3_ca[req_distinguished_name]countryName=CountryName(2letter code)stateOrProvinceName=StateorProvinceName(full name)localityName=LocalityName(eg,city)organizationName=OrganizationName(eg,company)organizationalUnitName=Organizational UnitName(eg,section)commonName=CommonName(eg,fully qualified host name)emailAddress=Email Address[v3_ca]subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer basicConstraints=critical,CA:truekeyUsage=critical,digitalSignature,cRLSign,keyCertSign`
#3.生成根CA私钥和根证书 # 生成根CA私钥(ca-root.key.pem),设置密码(记住密码,后续签发证书需使用) openssl genrsa-aes256-outprivate/ca-root.key.pem4096chmod400private/ca-root.key.pem # 生成根CA证书(ca-root.crt.pem),有效期10年 openssl req-config my-ca.cnf-keyprivate/ca-root.key.pem-new-x509-days3650-sha256-extensions v3_ca-outcerts/ca-root.crt.pem chmod444certs/ca-root.crt.pem`执行命令时需按提示输入信息(国家、省份、组织等),确保Common Name(CN)填写有辨识度的名称(如“DevRootCA”)。

2.2 生成后端服务器证书(server.crt/key)

  1. 进入后端项目目录,创建证书存放目录
# 进入后端项目根目录(替换为你的后端项目路径) cd/Users/troyzheng/code/api/2025-10-31-fileTransportSystem # 创建证书目录 mkdir-p certs cd certs`
  1. 生成服务器私钥和证书请求文件(CSR)
# 生成服务器私钥(server.key.pem) openssl genrsa-outserver.key.pem2048chmod400server.key.pem # 生成证书请求文件(server.csr.pem) openssl req-new-key server.key.pem-outserver.csr.pem-subj"/C=CN/ST=JS/L=NJ/O=DevBackend/OU=NestJS/CN=localhost"`参数说明:C(国家)、ST(省份)、L(城市)、O(组织)、OU(部门)、CN(通用名,需与后端服务地址一致,本地调试填localhost)。
  1. 用根CA签发服务器证书
# 签发服务器证书(有效期1年),使用根CA配置文件 openssl ca-config/opt/ca/root/my-ca.cnf-extensions v3_server-days365-inserver.csr.pem-outserver.crt.pem-batch chmod444server.crt.pem`签发成功后,后端certs目录下会生成`server.crt.pem`(证书)和`server.key.pem`(私钥)。

2.3 生成前端客户端证书(client.p12)

  1. 在后端证书目录继续生成客户端私钥和CSR
# 生成客户端私钥(client.key.pem) openssl genrsa-outclient.key.pem2048chmod400client.key.pem # 生成客户端证书请求文件(client.csr.pem) openssl req-new-key client.key.pem-outclient.csr.pem-subj"/C=CN/ST=JS/L=NJ/O=DevFrontend/OU=Vue3/CN=localhost"`
  1. 用根CA签发客户端证书
# 签发客户端证书(有效期1年),指定客户端扩展 openssl ca-config/opt/ca/root/my-ca.cnf-extensions v3_client-days365-inclient.csr.pem-outclient.crt.pem-batch chmod444client.crt.pem`
  1. 将客户端证书和私钥打包为p12格式(前端可直接解析)
# 生成client.p12,设置密码(前端解析需使用此密码,如Vue3@2025!) openssl pkcs12-export-inkey client.key.pem-inclient.crt.pem-outclient.p12-name"client-cert"chmod444client.p12`执行命令时需输入密码并确认,记住此密码(后续前端配置需用到)。生成成功后,后端certs目录下会新增`client.p12`文件。

2.4 证书文件整理

生成完成后,核心证书文件清单如下,后续需按路径要求放置:

  • 根CA证书:/opt/ca/root/certs/ca-root.crt.pem(需导入系统/浏览器)

  • 后端服务器证书:后端项目/certs/server.crt.pem后端项目/certs/server.key.pem

  • 前端客户端证书:后端项目/certs/client.p12(需复制到前端项目)

三、后端配置(NestJS)

后端配置核心:启用HTTPS服务、加载服务器证书、配置mTLS双向认证、设置跨域允许前端HTTPS地址。

3.1 配置HTTPS服务

  1. 修改后端项目根目录的main.ts,加载证书并启动HTTPS服务
import{NestFactory}from'@nestjs/core';import{AppModule}from'./app.module';import*asfsfrom'fs';import*aspathfrom'path';import{CorsOptions}from'@nestjs/common/interfaces/external/cors-options.interface';asyncfunctionbootstrap(){// 1. 读取服务器证书和私钥consthttpsOptions={cert:fs.readFileSync(path.join(__dirname,'..','certs',</
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 4:15:20

Cppcheck终极指南:3分钟掌握静态代码分析利器

还在为C/C代码中的内存泄漏、未初始化变量和数组越界而苦恼吗&#xff1f;每次调试都要花费数小时甚至数天时间&#xff1f;今天我要向你介绍一款能彻底改变你编程体验的神器——Cppcheck&#xff01;&#x1f680; 【免费下载链接】cppcheck static analysis of C/C code 项…

作者头像 李华
网站建设 2026/6/10 13:52:51

Atmosphere CFW终极使用指南:3个技巧让你告别系统崩溃

Atmosphere CFW终极使用指南&#xff1a;3个技巧让你告别系统崩溃 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere 作为Nintendo Switch上最…

作者头像 李华
网站建设 2026/6/10 5:56:18

按照官网适配的版本配置了MindSpore等,还是一直报错

问题描述 image656185 10.9 KB 这是我选择的参数 下载的版本 image477219 5.31 KB 最后还是一直报错 image1655289 20 KB 有完全适配的版本吗&#xff1f; 问题解答 上面的报错很明显,缺少opp_kernel 你看下/usr/local/Ascend/ascend-toolkit/8.2.RC1/ 目录下有没有 op…

作者头像 李华
网站建设 2026/6/9 15:53:15

企业设备全生命周期数字化管理解决方案

一、引言设备作为企业生产运营的核心资产&#xff0c;其管理效率直接影响生产连续性、运营成本与市场竞争力。传统设备管理模式面临台账混乱、维护被动、协同低效等痛点&#xff0c;已难以适配数字化转型需求。本文围绕设备全生命周期管理&#xff0c;构建“数据驱动流程闭环工…

作者头像 李华
网站建设 2026/6/10 15:32:34

指定Ascend设备但仍然使用CPU

问题描述使用Ascend算力微调模型时&#xff0c;虽然已指定Ascend设备&#xff0c;但在测试模型推理时仍使用CPU导致报错微调模型deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B!modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --local_dir ./Qwen-1.5B版…

作者头像 李华
网站建设 2026/6/9 18:24:21

香橙派AI pro 8tops CANN 8.2.RC1 安装MIndSpore2.7.1、2.7.0、2.6.0失败

问题描述开发板是香橙派AI pro 8tops (16g) 固件版本25.2.0&#xff0c;芯片310B4目前安装 mindspore 2.7.1、2.7.0、2.6.0都没有通过检测2.7.0的报错如下&#xff1a;(ms27) HwHiAiUserorangepiaipro:~/WorkPlace/projects/mindspore$ python -c "import mindspore;minds…

作者头像 李华