【Azure 环境】在Windows环境中使用OpenSSL生成自签名证书链步骤分享
问题描述在Web应用部署环境中常常需要为内部系统或测试环境生成自签名证书尤其是包含根证书、中间证书和服务器证书的完整证书链并最终生成包含私钥的 PFX 文件.pfx。如何使用 openssl 工具一步步完成这些操作成为很多工程师的实际需求。本文将详细介绍如何用 openssl 生成自签名证书链并将其打包为 PFX 文件。问题解答下面是一套可复制即用的分步骤指南使用OpenSSL在本机创建三类证书自签名根 CARoot CA由根 CA 签发的中间 CAIntermediate CA由中间 CA 签发的服务器证书Leaf/Server Cert。同时包含openssl.cnf的示例、证书链验证命令以及生成包含三张证书服务器 中间 根的PFX包的做法。生成的步骤如下流程图所示。第一步安装OpenSSL下载路径Downloads | OpenSSL Library, Windows 环境中直接下载最新的 .tar.gz 文件本地解压后可直接使用PS: 最好在PATH环境变量中添加OpenSSL的路径方便后续使用。第二步创建配置文件 openssl.cnf准备一个生成及存放证书的目录然后创建openssl.cnf文件如mkdir certs_1 cd certs_1初始化的openssl.cnf内容如下需要替换域名和组织信息123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051# ----- Basic req settings -----[ req ]default_bits 2048prompt nodistinguished_name dnreq_extensions req_ext[ dn ]C CNST CQL CQO SelfCA OrgOU CertOpsCN myself.com# CSR-time extra extensions (used by: -reqexts req_ext)[ req_ext ]subjectAltName alt_names[ alt_names ]DNS.1 *.myself.comDNS.2 www.myself.com# ----- Root CA certificate extensions -----[ v3_root_ca ]subjectKeyIdentifier hashauthorityKeyIdentifier keyid:always,issuerbasicConstraints critical, CA:TRUE, pathlen:1keyUsage critical, keyCertSign, cRLSign# ----- Intermediate CA certificate extensions -----[ v3_intermediate_ca ]subjectKeyIdentifier hashauthorityKeyIdentifier keyid:always,issuerbasicConstraints critical, CA:TRUE, pathlen:0keyUsage critical, keyCertSign, cRLSign# ----- Server (leaf) certificate extensions -----[ server_cert ]subjectKeyIdentifier hashauthorityKeyIdentifier keyid,issuerbasicConstraints CA:FALSEkeyUsage critical, digitalSignature, keyEnciphermentextendedKeyUsage serverAuthsubjectAltName alt_names# CSR-time server req (used with: -reqexts server_req)[ server_req ]basicConstraints CA:FALSEkeyUsage digitalSignature, keyEnciphermentextendedKeyUsage serverAuth第三步生成根CA私钥和证书12345678# 生成根 CA 私钥加密私钥需输入口令如不加密去掉 -aes256openssl genrsa -aes256 -outrootCA.key 4096# 生成根 CA 的 CSR可直接自签CN 可写组织名或 Example Root CAopenssl req -new-sha256 -key rootCA.key -outrootCA.csr -subj/CCN/STCQ /OSelfCA Org/CNMy Self Root CA-config openssl.cnf# 使用 X.509 自签生成根 CA 证书10 年有效期举例openssl x509 -req -sha256 -days 3650 -inrootCA.csr -signkey rootCA.key -outrootCA.crt -extfile openssl.cnf -extensions v3_root_ca第四步生成中间CA私钥和证书12345678#生成中间 CA 私钥与 CSRopenssl genrsa -outinterCA.key 4096 openssl req -new-sha256 -key interCA.key -outinterCA.csr -subj/CCN/STCQ/OSelf Intermediate Org/CNMy Self Intermediate CA-config openssl.cnfbr# 用根 CA 签发中间 CA 证书# 通过根 CA 为中间 CA CSR 签名并指定中间 CA 扩展pathlen0/1 视需求openssl x509 -req -sha256 -days 1825 -ininterCA.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -outinterCA.crt -extfile openssl.cnf -extensions v3_intermediate_ca第五步生成服务器私钥和证书12345678# 生成服务器私钥与 CSR含 SANopenssl genrsa -outserver.key 2048# 生成 CSR并在 -req 扩展中声明 SAN在 openssl.cnf 的 [server_req] 与 [alt_names] 中定义openssl req -new-sha256 -key server.key -outserver.csr -subj/CCN/STCQ/OMy Self Server Org/CN*.mytest.com-config openssl.cnf -reqexts server_req# 用中间 CA 为服务器 CSR 签名openssl x509 -req -sha256 -days 825 -inserver.csr -CA interCA.crt -CAkey interCA.key -CAcreateserial -outserver.crt -extfile openssl.cnf -extensions server_cert第三四五步的实验结果如图第六步合并证书链1234567# 构造完整证书链文件Intermediate Roottype interCA.crt rootCA.crt chain.crt# 验证 server.crt 是否能由 chain.crt中间根构成完整信任链openssl verify -CAfile chain.crt server.crt第七步生成PFX文件12# 将中间根合并为 chain.crt 后一起导入openssl pkcs12 -export -outserver_fullchain.pfx -inkey server.key -inserver.crt -certfile chain.crt -nameMy Self Full Server Cert-passout pass:xxxxxxxxx最终所生成的证书文件展示
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2442994.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!