Openssl关键知识文章目录Openssl关键知识1 常用命令2 证书扩展段Extensions Section3 常用证书类型openssl及证书相关知识一般好像很简单其实很复杂这里介绍一些相对关键的部分以后还会扩展。更多openssl及ca知识请看https://gitee.com/zhf_sy/zzxia-openssl-ca-server1 常用命令命令用途典型使用场景openssl genrsa生成 RSA 私钥为 CA 或用户生成私钥文件.keyopenssl req生成证书请求CSR或自签名证书基于私钥生成 CSR 文件.csr交互式或静默式填写主题信息openssl ca以 CA 身份签发/吊销证书CA 根据 CSR 签发证书记录到index.txt数据库管理序列号openssl x509证书格式转换、查看、自签名CA 自签名证书生成-req -signkey、PEM↔DER 格式转换、查看证书详情openssl crlCRL 格式转换与查看PEM↔DER 格式转换、查看吊销列表详情openssl verify验证证书链验证用户证书是否由指定 CA 签发-CAfileopenssl cavsopenssl x509签发区别openssl ca完整的 CA 流程会更新index.txt数据库和serial序列号支持吊销管理openssl x509 -req -signkey简单的自签名不经过 CA 数据库仅用于根 CA 自签名证书两步先req生成 CSR再x509自签名openssl req -new -x509一步完成自签名证书生成省去 CSR 中间步骤效果等同上面两步但更简洁2 证书扩展段Extensions Section本项目的openssl.cnf中定义了以下扩展段用于不同类型的证书签发扩展段用途basicConstraintssubjectKeyIdentifierauthorityKeyIdentifiersubjectAltNamev3_reqCSR 生成openssl req的req_extensionsCA:FALSE✅hash❌ 不可包含CSR 阶段无签发者✅alt_namesusr_cert终端证书签发openssl ca的-extensionsCA:FALSE✅hash✅keyid,issuer✅alt_namesv3_caCA/sub-CA 证书签发openssl ca或openssl x509的-extensionsCA:true✅hash✅keyid:always,issuer严格模式✅alt_names为什么v3_req不能包含authorityKeyIdentifier因为v3_req同时被openssl req用作req_extensions。生成 CSR 时还没有签发者证书如果包含authorityKeyIdentifier会导致 OpenSSL 报错。keyidvskeyid:always的区别keyid尝试从签发者证书复制 SKI失败时静默跳过适合终端证书keyid:always失败时报错确保证书链完整性适合 CA 证书3 常用证书类型编号参数值证书类型密钥用法 (keyUsage)增强密钥用法 (extendedKeyUsage)1caCA证书nonRepudiation, keyCertSign, cRLSign-2code代码签名digitalSignaturecodeSigning3computer计算机digitalSignature, keyAgreementserverAuth4webserverWEB服务器digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreementserverAuth5client客户端digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentclientAuth6trustlist信任列表digitalSignaturemsCTLSign7timestamp时间戳digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermenttimeStamping8ipsecIPSecdigitalSignature, nonRepudiation, keyEncipherment, dataEncipherment1.3.6.1.5.5.8.2.29email安全邮件digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentemailProtection10smartcard智能卡登录digitalSignature, keyAgreement, decipherOnlymsEFS, 1.3.6.1.4.1.311.20.2.2