当前位置: 首页 > news >正文

证书创建方法说明

生成证书 方法一:合适(临时测试,不需要管理)

快速生成脚本(一键完成)

创建 create_lan_cert.sh:

#!/bin/bash# 配置参数IP_ADDR="192.168.1.100"# 修改为你的局域网IPDAYS=365CERT_NAME="lan-server"# 创建配置文件cat>${CERT_NAME}.conf<<EOF [req] default_bits = 2048 prompt = no default_md = sha256 x509_extensions = v3_req distinguished_name = dn [dn] C=CN ST=Guangdong L=Shenzhen O=HomeLab CN=${IP_ADDR}[v3_req] keyUsage = keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] IP.1 =${IP_ADDR}DNS.1 = localhost EOF# 生成自签名证书openssl req-x509-newkeyrsa:2048-nodes\-keyout${CERT_NAME}.key\-out${CERT_NAME}.crt\-days${DAYS}\-config${CERT_NAME}.conf# 清理配置文件(可选)# rm ${CERT_NAME}.confecho"证书生成完成:"echo"私钥:${CERT_NAME}.key"echo"证书:${CERT_NAME}.crt"

生成证书 方法二 合适(设备多,需管理)

生成 CA 根证书(可选,用于信任链)

# 生成 CA 私钥# 指定将生成的私钥保存到名为 ca.key 的文件中。这个文件是你的“根密钥”,后续所有由你签发的证书都将依赖它 -key ca.key,因此必须严格保密openssl genrsa-outca.key2048# 生成 CA 证书(有效期10年)#指定将生成的证书保存到名为 ca.crt 的文件中。这个文件就是“根证书”,你需要将它安装到操作系统或浏览器的“受信任的根证书颁发机构”列表中,这样由它签发的所有下级证书(如你的服务器证书)才会被信任openssl req-x509-new-nodes-keyca.key-sha256-days3650-outca.crt

生成服务器证书

# 服务器的私钥文件# server.key 私钥主要在以下两个关键环节发挥作用:# 解密数据# 当客户端(如浏览器)与服务器建立 HTTPS 连接时,会使用服务器证书中的公钥来加密一个“会话密钥”。只有持有对应私钥(即 server.key)的服务器才能解密出这个会话密钥,后续的通信都将使用这个会话密钥进行快速、安全的对称加密。# 数字签名# 在 TLS 握手过程中,服务器会使用 server.key 对一部分握手数据进行签名,以向客户端证明它确实是该证书的合法持有者,从而防止中间人攻击openssl genrsa-outserver.key2048# 创建证书配置文件 (server.conf)cat>server.conf<<EOF [req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn req_extensions = v3_req [dn] C=CN ST=Guangdong L=Shenzhen O=MyCompany OU=IT CN=192.168.1.100 [v3_req] keyUsage = keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] IP.1 = 192.168.1.100 IP.2 = 10.0.0.100 DNS.1 = my-server.local DNS.2 = localhost EOF# 生成证书签名请求 (CSR)# 生成一个包含服务器公钥和身份信息的请求文件(server.csr)。这个 .csr 文件随后会被提交给证书颁发机构(CA),由 CA 对其进行签名,最终生成可信赖的服务器证书(.crt)openssl req-new-keyserver.key-outserver.csr-configserver.conf# 使用 CA 签名生成证书(如果有CA)openssl x509-req-inserver.csr-CAca.crt-CAkeyca.key-CAcreateserial\-outserver.crt-days365-sha256-extensionsv3_req-extfileserver.conf# 或生成自签名证书(无需CA)openssl req-x509-new-nodes-keyserver.key-sha256-days365\-outserver.crt-configserver.conf-extensionsv3_req

生成客户端证书

#生成客户端私钥openssl genrsa-outclient.key2048# 创建客户端证书配置 client.confcat>client.conf<<EOF [req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn req_extensions = v3_req [dn] C=CN ST=Guangdong L=Shenzhen O=MyCompany OU=IT CN=client-user-01 emailAddress=user01@mycompany.com [v3_req] keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = clientAuth subjectAltName = @alt_names # 客户端证书:可选(通常不需要) [alt_names] email.1 = user01@mycompany.com EOF# 生成客户端CSRopenssl req-new-keyclient.key-outclient.csr-configclient.conf# 用CA签名生成客户端证书openssl x509-req-inclient.csr\-CAca.crt-CAkeyca.key-CAcreateserial\-outclient.crt\-days365\-sha256\-extensionsv3_req-extfileclient.conf# 生成客户端PKCS#12格式证书(用于浏览器导入)openssl pkcs12-export\-inclient.crt\-inkeyclient.key\-outclient.p12\-name"MyCompany Client Cert"\-passwordpass:changeit# 可选:生成无密码的P12(不推荐)# openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -nodes -password pass:

客户端证书和服务器端证书的区别

关键字段详解

1. Common Name (CN) 的区别

## 服务器证书:CN 必须是访问地址CN=192.168.1.100# IP地址CN=myserver.local# 域名CN=*.company.com# 通配符域名# 客户端证书:CN 是用户/设备标识CN=alice.smith# 用户名CN=laptop-abc123# 设备名CN=api-client-prod# 服务账号

2. KeyUsage 的区别

# 服务器证书用途keyUsage=keyEncipherment, dataEncipherment# 解释:# - keyEncipherment: 用于加密会话密钥(RSA密钥交换)# - dataEncipherment: 直接加密数据(较少使用)# 客户端证书用途keyUsage=digitalSignature# 解释:# - digitalSignature: 用于数字签名(客户端身份验证)

3. ExtendedKeyUsage 的区别

# 服务器证书extendedKeyUsage=serverAuth# OID: 1.3.6.1.5.5.7.3.1# 含义:该证书可用于TLS服务器身份验证# 客户端证书extendedKeyUsage=clientAuth# OID: 1.3.6.1.5.5.7.3.2# 含义:该证书可用于TLS客户端身份验证# 也可以同时支持多种用途(不推荐)extendedKeyUsage=serverAuth, clientAuth# 既是服务器又是客户端

4. Subject Alternative Name (SAN) 的区别

# 服务器证书:必须包含(浏览器强制要求)[alt_names]IP.1=192.168.1.100# IP地址DNS.1=myserver.local# 域名DNS.2=localhost# 本地# 客户端证书:可选(通常不需要)[alt_names]email.1=user@company.com# 邮箱DNS.1=user-device# 设备标识

客户端信任设置

Windows cmd# 安装证书到信任根certutil-addstore"Root"server.crt macOSbashsudosecurity add-trusted-cert-d-rtrustRoot-k/Library/Keychains/System.keychain server.crt Linux(Ubuntu/Debian)bashsudocpserver.crt /usr/local/share/ca-certificates/sudoupdate-ca-certificates

证书验证

# 查看证书信息openssl x509-inserver.crt-text-noout# 验证证书和私钥是否匹配openssl x509-noout-modulus-inserver.crt|openssl md5 openssl rsa-noout-modulus-inserver.key|openssl md5# 测试SSL连接openssl s_client-connect192.168.1.100:443-CAfileca.crt
http://www.jsqmd.com/news/581984/

相关文章:

  • 利用快马平台快速生成openclaw一键安装脚本原型,告别环境配置烦恼
  • 不仅会应答,更能直接建单与查进度:适合运维报修场景的AI语音机器人选型参考 - 品牌2025
  • 《Windows Internals》10.1.17 Hive size limits:为什么有些 Hive 不能无限长大,尤其是 SYSTEM Hive?
  • 基于视觉识别的鸣潮游戏自动化框架:技术原理与实战应用
  • 公考教父级教学,不同阶段学员都能适配
  • 3分钟搞定!OpenClaw 权限全开终极指南:彻底关闭审批 + 双重配置详解 + 强制安装风险插件
  • 以TechViz VR技术为驱动助力马扎冈造船厂设计效率升级实践
  • 第一次尝试使用制作HTML列表与表格
  • AGV如何选合适的传感器
  • 基于yolov26的樱桃成熟度检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • YOLOv8n-face:轻量级人脸检测技术的突破性进展
  • 一文搞懂RAG-从索引构建到检索生成的完整技术原理
  • AI辅助开发:让快马平台智能生成cc-switch主题切换最佳实践代码
  • 社区心理疏导机器人排行榜:2026社区落地到底该选哪一款? - 健成星云
  • 大模型应用开发第三天
  • AI大模型:重塑软件行业的创新引擎与发展新范式
  • 每日一题 力扣 3418. 机器人可以获得的最大金币数 力扣 215. 数组中的第K个最大元素 动态规划 TopK问题 C++ 题解
  • Next.js 15 认证方案:NextAuth v4 配合 Drizzle ORM 的落地实践
  • 战舰工具 1.47 逆向分析与授权绕过全记录
  • 《Windows Internals》10.1.18 Startup and the registry process:为什么现代 Windows 不再把所有 Hive 都简单塞进 paged poo
  • 镜像视界|让每一个像素成为坐标——人体无感定位技术白皮书(完整版·第一部分)
  • 计算机专业毕业 = 码农 ?网络安全正在重塑你的职业天花板,收藏这篇就够了
  • Zotero PDF Preview:让文献预览效率提升60%的无缝集成方案
  • 激光SLAM在哪些场景下表现更好
  • 【.NET】.NET 4.8下载 | .NET Framework 4.8安装使用指南(附安装包+图文步骤) - xiema
  • BUUCTF-[DDCTF2018]流量分析
  • 构筑可信电子签名签章体系,亲笔签助力黔江区公立医院改革与高质量发展
  • Linux驱动三要素之——总线
  • 打卡信奥刷题(3056)用C++实现信奥题 P6767 [BalticOI 2012/2020] 玫瑰 (Day0)
  • 基于yolov26的矿井人员安全检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面