千家信息网

OpenSSL自建CA和CA链,给主机签发证书的批处理(使用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,x509命令和CA命令都能以CA身份给客户签发证书,本文介绍前者,CA命令的用法见另一篇博文。当使用-CA infile选项时,x509命令的行为就像是一个"迷你CA",对输入的文件进行签名,它不像C
千家信息网最后更新 2026年10月31日OpenSSL自建CA和CA链,给主机签发证书的批处理(使用

x509命令和CA命令都能以CA身份给客户签发证书,本文介绍前者,CA命令的用法见另一篇博文。

当使用-CA infile选项时,x509命令的行为就像是一个"迷你CA",对输入的文件进行签名,它不像CA命令那样需要预先建立配置文件定义的目录结构,也不把曾经签署的证书信息写入数据库,使用上相对方便一些。

把openssl.exe所在文件夹加入PATH环境变量,就可以在任何位置执行批处理(不建议安装于C盘,因为在生成文件的过程中可能会遇到的权限问题)。

为了防止浏览器弹出"没有主题备用名称"的警告信息,需要将配置文件"C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf"拷贝两份到D盘根目录,分别改名为01.ext和02.ext,在01.ext的[usr_cert]一节添加subjectAltName = DNS:host1,在02.ext的[usr_cert]一节添加subjectAltName = DNS:host2,请确保这两个文件存在。

复制下列代码粘贴到DOS窗口执行即可,或者保存为批处理文件,注意倒数第一行需要打回车。为了保证干净的实验环境,每次执行都会先删除之前建立的目录然后重建,所以不要在这些目录里保存重要资料。切记!

OpenSSL版本号为Windows版1.1.1c 28 May 2019。

用x509命令签发证书

根CA签发

实验场景:先建立根CA:RCA,再由RCA签发主机HOST1和HOST2的证书

批处理在D盘下建立目录RCA、HOST1、HOST2,各目录存放的文件顾名思义,其中RCA保留曾签发的所有证书的备份。

:: 根CA签发:: 删除之前所有的文件d:&cd\&rd/s/q host1&rd/s/q host2&rd/s/q rca&md host1&md host2&md rca&cd rca :: 生成自签名的根证书,私钥和公钥:openssl req -x509 -newkey rsa:8192 -keyout rca.key -out rca.cer -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=CA-R/CN=RCA/emailAddress=ca@tiger.com -passout pass:abcdopenssl rsa -in rca.key -pubout -out rca.pub -passin pass:abcd :: 把RCA的证书和公钥拷贝到HOST1和HOST2copy rca.pub d:\host1© rca.cer d:\host1© rca.pub d:\host2© rca.cer d:\host2 :: 生成host1与host2的证书请求、私钥和公钥openssl req -newkey rsa:8192 -keyout host1.key -out host1.csr -subj /C=CN/ST=guangdong/L=shenzhen/O=SUN/OU=Office-1/CN=host1  -addext "subjectAltName = DNS:host1" -passout pass:abcdopenssl req -newkey rsa:8192 -keyout host2.key -out host2.csr -subj /C=CN/ST=guangdong/L=shenzhen/O=SUN/OU=Office-2/CN=host2  -addext "subjectAltName = DNS:host2" -passout pass:abcdopenssl rsa -in host1.key -pubout -out host1.pub -passin pass:abcdopenssl rsa -in host2.key -pubout -out host2.pub -passin pass:abcd :: 用RCA的私钥签署用户请求Openssl x509 -req -days 1095 -in host1.csr -CA rca.cer -CAkey rca.key -out host1.cer -CAcreateserial -passin pass:abcd -extfile "d:\01.ext" -extensions usr_certOpenssl x509 -req -days 1095 -in host2.csr -CA rca.cer -CAkey rca.key -out host2.cer -CAcreateserial -passin pass:abcd -extfile "d:\02.ext" -extensions usr_cert :: 把HOST1和HOST2的所属文件拷贝到对应目录copy host1.* d:\host1© host2.* d:\host2 :: 验证证书链openssl verify -show_chain -CAfile rca.cer host1.ceropenssl verify -show_chain -CAfile rca.cer host2.ceropenssl x509 -in rca.cer -noout -text|find "CA:TRUE"openssl x509 -in host1.cer -noout -text|find "CA:TRUE"openssl x509 -in host2.cer -noout -text|find "CA:TRUE"


二级CA签发

根CA:CA1

中间CA:CA2

CA1签发CA2的证书,CA2给HOST1和HOST2签发证书。

批处理在D盘根目录下建立目录CA1、CA2、HOST1、HOST2,各目录存放的文件顾名思义,其中CA2保留曾签发的所有证书的备份。

:: 二级CA签发:: 删除之前所有的文件d:&cd\&rd/s/q host1&rd/s/q host2&rd/s/q ca1&rd/s/q ca2&md host1&md host2&md ca1&md ca2&cd ca1 :: 生成自签名的CA1根证书、私钥和公钥:openssl req -x509 -newkey rsa:8192 -keyout ca1.key -out ca1.cer -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=CA-1/CN=CA1/emailAddress=ca1@tiger.com -passout pass:abcdopenssl rsa -in ca1.key -pubout -out ca1.pub -passin pass:abcd :: 把CA1的证书和公钥拷贝到CA2,HOST1和HOST2copy ca1.cer d:\host1© ca1.pub d:\host1© ca1.cer d:\host2© ca1.pub d:\host2© ca1.cer d:\ca2© ca1.pub d:\ca2 :: 生成CA2的请求,私钥和公钥openssl req -newkey rsa:8192 -keyout ca2.key -out ca2.csr -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=CA-2/CN=CA2/emailAddress=ca2@tiger.com -passout pass:abcdopenssl rsa -in ca2.key -pubout -out ca2.pub -passin pass:abcd :: 用CA1的私钥签署CA2的请求Openssl x509 -req -days 1095 -in ca2.csr -CA ca1.cer -CAkey ca1.key -out ca2.cer -days 3650 -passin pass:abcd -extfile "C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf" -extensions v3_ca -CAcreateserial :: 把CA2的证书和公钥拷贝到HOST1和HOST2,把CA2所属文件都拷贝到CA2copy ca2.cer d:\host1© ca2.pub d:\host1© ca2.cer d:\host2© ca2.pub d:\host2© ca2.* \ca2&cd\ca2 :: 生成HOST1与HOST2的证书请求、私钥和公钥openssl req -newkey rsa:8192 -keyout host1.key -out host1.csr -subj /C=CN/ST=guangdong/L=shenzhen/O=SUN/OU=Office-1/CN=host1 -addext "subjectAltName = DNS:host1" -passout pass:abcdopenssl req -newkey rsa:8192 -keyout host2.key -out host2.csr -subj /C=CN/ST=guangdong/L=shenzhen/O=SUN/OU=Office-2/CN=host2 -addext "subjectAltName = DNS:host2" -passout pass:abcdopenssl rsa -in host1.key -pubout -out host1.pub -passin pass:abcdopenssl rsa -in host2.key -pubout -out host2.pub -passin pass:abcd :: 用CA2的私钥签署用户证书:Openssl x509 -req -days 1095 -in host1.csr -CA ca2.cer -CAkey ca2.key -out host1.cer -days 3650 -passin pass:abcd -CAcreateserial  -extfile "d:\01.ext" -extensions usr_certOpenssl x509 -req -days 1095 -in host2.csr -CA ca2.cer -CAkey ca2.key -out host2.cer -days 3650 -passin pass:abcd -CAcreateserial  -extfile "d:\02.ext" -extensions usr_certecho 把HOST1和HOST2的所有文件拷贝到对应目录copy host1.* d:\host1© host2.* d:\host2 :: 验证证书链copy ca2.cer+ca1.cer ca-chain.ceropenssl verify -show_chain -CAfile ca-chain.cer host1.ceropenssl verify -show_chain -CAfile ca-chain.cer host2.ceropenssl x509 -in ca1.cer -noout -text|find "CA:TRUE"openssl x509 -in ca2.cer -noout -text|find "CA:TRUE"openssl x509 -in host1.cer -noout -text|find "CA:TRUE"openssl x509 -in host2.cer -noout -text|find "CA:TRUE"


三级CA签发

根CA:CA1

中间CA:CA2,CA3

CA1签发CA2的证书,CA2签发CA3的证书,CA3给HOST1和HOST2签发证书。

批处理在D盘根目录下建立目录CA1、CA2、CA3、HOST1、HOST2,各目录存放的文件顾名思义,其中CA3保留曾签发的所有证书的备份。

:: 三级CA签发:: 删除之前所有的文件d:&cd\&rd/s/q host1&rd/s/q host2&rd/s/q ca1&rd/s/q ca2&rd/s/q ca3&md host1&md host2&md ca1&md ca2&md ca3&cd ca1 :: 生成自签名的CA1根证书、私钥和公钥:openssl req -x509 -newkey rsa:8192 -keyout ca1.key -out ca1.cer -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=CA-1/CN=CA1/emailAddress=ca1@tiger.com -passout pass:abcdopenssl rsa -in ca1.key -pubout -out ca1.pub -passin pass:abcd :: 把CA1的证书和公钥拷贝到CA2,CA3,HOST1,HOST2copy ca1.cer d:\ca2© ca1.pub d:\ca2© ca1.cer d:\ca3© ca1.pub d:\ca3© ca1.cer d:\host1© ca1.pub d:\host1© ca1.cer d:\host2© ca1.pub d:\host2 :: 生成CA2的请求,私钥和公钥openssl req -newkey rsa:8192 -keyout ca2.key -out ca2.csr -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=CA-2/CN=CA2/emailAddress=ca2@tiger.com -passout pass:abcdopenssl rsa -in ca2.key -pubout -out ca2.pub -passin pass:abcd :: 用CA1的私钥签署CA2的请求Openssl x509 -req -days 1095 -in ca2.csr -CA ca1.cer -CAkey ca1.key -out ca2.cer -days 3650 -passin pass:abcd -extfile "C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf" -extensions v3_ca -CAcreateserial :: 把CA2的证书和公钥拷贝到CA3,HOST1和HOST2,把CA2所属文件都拷贝到CA2copy ca2.cer d:\ca3© ca2.pub d:\ca3© ca2.cer d:\host1© ca2.pub d:\host1© ca2.cer d:\host2© ca2.pub d:\host2© ca2.* \ca2&cd\ca2 :: 生成CA3的请求,私钥和公钥openssl req -newkey rsa:8192 -keyout ca3.key -out ca3.csr -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=CA-3/CN=CA3/emailAddress=ca3@tiger.com -passout pass:abcdopenssl rsa -in ca3.key -pubout -out ca3.pub -passin pass:abcd :: 用CA2的私钥签署CA3的请求Openssl x509 -req -days 1095 -in ca3.csr -CA ca2.cer -CAkey ca2.key -out ca3.cer -days 3650 -passin pass:abcd -extfile "C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf" -extensions v3_ca -CAcreateserial  :: 把CA3的证书和公钥拷贝到HOST1和HOST2,把CA3所属文件都拷贝到CA3copy ca3.cer d:\host1© ca3.pub d:\host1© ca3.cer d:\host2© ca3.pub d:\host2© ca3.* \ca3&cd\ca3 :: 生成HOST1与HOST2的证书请求、私钥和公钥openssl req -newkey rsa:8192 -keyout host1.key -out host1.csr -subj /C=CN/ST=guangdong/L=shenzhen/O=SUN/OU=Office-1/CN=host1 -addext "subjectAltName = DNS:host1" -passout pass:abcdopenssl req -newkey rsa:8192 -keyout host2.key -out host2.csr -subj /C=CN/ST=guangdong/L=shenzhen/O=SUN/OU=Office-2/CN=host2 -addext "subjectAltName = DNS:host2" -passout pass:abcdopenssl rsa -in host1.key -pubout -out host1.pub -passin pass:abcdopenssl rsa -in host2.key -pubout -out host2.pub -passin pass:abcd :: 用CA3的私钥签署用户证书:Openssl x509 -req -days 1095 -in host1.csr -CA ca3.cer -CAkey ca3.key -out host1.cer -days 3650 -passin pass:abcd -CAcreateserial -extfile "d:\01.ext" -extensions usr_certOpenssl x509 -req -days 1095 -in host2.csr -CA ca3.cer -CAkey ca3.key -out host2.cer -days 3650 -passin pass:abcd -CAcreateserial -extfile "d:\02.ext" -extensions usr_cert :: 把HOST1和HOST2的所有文件拷贝到对应目录copy host1.* d:\host1© host2.* d:\host2  :: 验证证书链:copy ca3.cer+ca2.cer+ca1.cer ca-chain.ceropenssl verify -show_chain -CAfile ca-chain.cer host1.ceropenssl verify -show_chain -CAfile ca-chain.cer host2.ceropenssl x509 -in ca1.cer -noout -text|find "CA:TRUE"openssl x509 -in ca2.cer -noout -text|find "CA:TRUE"openssl x509 -in ca3.cer -noout -text|find "CA:TRUE"openssl x509 -in host1.cer -noout -text|find "CA:TRUE"openssl x509 -in host2.cer -noout -text|find "CA:TRUE"




证书 文件 公钥 目录 拷贝 生成 命令 所属 顾名思义 备份 用户 思义 盘根 前所 顾名 验证 信息 环境 实验 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技战争 互联网科技开发公司 互联网 科技 易互联网科技有限公司 猪兼强互联网科技 互联网科技公司电话 互联网科技作文 卓越科技(互联网 ) 亿账通互联网科技 博兴的互联网电子科技公司 云创客互联网科技公司 宁波青枫互联网科技有限公司 武汉健翔互联网络科技有限公司 青海科技产业互联网发展 银川新华互联网科技学校联系电话 互联网公司黑科技创始人 产业互联网科技服务公司 互联网高科技行业有哪些企业 保山浩联互联网科技有限公司 广东猫王互联网科技有限公司电话 互联网科技有限公司 中国互联网科技工作委员会毛军 菲比寻常互联网科技 互联网 视角下的科技创新 富国互联网科技创新基金 荆州市昕露互联网络科技有限公司 晓花互联网科技有限公司网址 每天都有哪些好的互联网科技 江苏互联网智能科技软件 互联网科技自媒体灵感
0