证书创建方法说明
生成证书 方法一合适临时测试不需要管理快速生成脚本一键完成创建 create_lan_cert.sh#!/bin/bash# 配置参数IP_ADDR192.168.1.100# 修改为你的局域网IPDAYS365CERT_NAMElan-server# 创建配置文件cat${CERT_NAME}.confEOF [req] default_bits 2048 prompt no default_md sha256 x509_extensions v3_req distinguished_name dn [dn] CCN STGuangdong LShenzhen OHomeLab 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}.keyecho证书:${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)catserver.confEOF [req] default_bits 2048 prompt no default_md sha256 distinguished_name dn req_extensions v3_req [dn] CCN STGuangdong LShenzhen OMyCompany OUIT CN192.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 对其进行签名最终生成可信赖的服务器证书.crtopenssl req-new-keyserver.key-outserver.csr-configserver.conf# 使用 CA 签名生成证书如果有CAopenssl x509-req-inserver.csr-CAca.crt-CAkeyca.key-CAcreateserial\-outserver.crt-days365-sha256-extensionsv3_req-extfileserver.conf# 或生成自签名证书无需CAopenssl req-x509-new-nodes-keyserver.key-sha256-days365\-outserver.crt-configserver.conf-extensionsv3_req生成客户端证书#生成客户端私钥openssl genrsa-outclient.key2048# 创建客户端证书配置 client.confcatclient.confEOF [req] default_bits 2048 prompt no default_md sha256 distinguished_name dn req_extensions v3_req [dn] CCN STGuangdong LShenzhen OMyCompany OUIT CNclient-user-01 emailAddressuser01mycompany.com [v3_req] keyUsage digitalSignature, keyEncipherment extendedKeyUsage clientAuth subjectAltName alt_names # 客户端证书可选通常不需要 [alt_names] email.1 user01mycompany.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\-nameMyCompany 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 必须是访问地址CN192.168.1.100# IP地址CNmyserver.local# 域名CN*.company.com# 通配符域名# 客户端证书CN 是用户/设备标识CNalice.smith# 用户名CNlaptop-abc123# 设备名CNapi-client-prod# 服务账号2. KeyUsage 的区别# 服务器证书用途keyUsagekeyEncipherment, dataEncipherment# 解释# - keyEncipherment: 用于加密会话密钥RSA密钥交换# - dataEncipherment: 直接加密数据较少使用# 客户端证书用途keyUsagedigitalSignature# 解释# - digitalSignature: 用于数字签名客户端身份验证3. ExtendedKeyUsage 的区别# 服务器证书extendedKeyUsageserverAuth# OID: 1.3.6.1.5.5.7.3.1# 含义该证书可用于TLS服务器身份验证# 客户端证书extendedKeyUsageclientAuth# OID: 1.3.6.1.5.5.7.3.2# 含义该证书可用于TLS客户端身份验证# 也可以同时支持多种用途不推荐extendedKeyUsageserverAuth, clientAuth# 既是服务器又是客户端4. Subject Alternative Name (SAN) 的区别# 服务器证书必须包含浏览器强制要求[alt_names]IP.1192.168.1.100# IP地址DNS.1myserver.local# 域名DNS.2localhost# 本地# 客户端证书可选通常不需要[alt_names]email.1usercompany.com# 邮箱DNS.1user-device# 设备标识客户端信任设置Windows cmd# 安装证书到信任根certutil-addstoreRootserver.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.coloradmin.cn/o/2479370.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!