在学习OpenSSL的过程中经常需要建立CA,再用此CA给客户签发证书,这个过程总是反复进行,让人不胜其烦。
所以写下了这个文档把以上过程自动化,注意有些命令行很长,看起来是多行,所以不要单行复制,而是从头至尾复制全部代码,然后粘贴到Windows命令行窗口执行即可(注意倒数第一行代码的最后要有回车),或者也可保存为批处理。
本实验的场景是建立CA,并由CA给主机HOST1和HOST2签发证书
本代码首先在D盘建立了三个目录:CA,HOST1和HOST2
CA下存放了四个文件:CA的根证书、私钥、公钥、序列号文件(记录上次签发的最后一张证书的序列号,每次加1);
HOST1下存放了六个文件:HOST1的证书、私钥、公钥,请求文件,以及CA根证书和CA的公钥;
HOST2下存放了六个文件:HOST2的证书、私钥、公钥,请求文件,以及CA根证书和CA的公钥;
把openssl.exe所在文件夹(默认是C:\Program Files\OpenSSL-Win64\bin)加入PATH环境变量,就可以在任何位置执行代码,每次执行都会先清空上述三个目录,然后再生成新的文件。
md d:\host1&md d:\host2&md d:\ca&del/q d:\host2\*.*&del/q d:\host1\*.*&del/q d:\ca\*.*&d:&cd\ca
openssl req -x509 -newkey rsa:8192 -keyout ca.key -out ca.cer -days 3650 -subj /C=CN/ST=jiangsu/L=nanjing/O=Tiger/OU=T-CA/CN=CA/[email protected] -passout pass:abcd
openssl rsa -in ca.key -pubout -out ca.pub -passin pass:abcd
copy ca.pub d:\host1© ca.cer d:\host1© ca.pub d:\host2© ca.cer d:\host2
openssl req -newkey rsa:8192 -keyout host1.key -out host1.csr -subj /CN=host1 -nodes
openssl req -newkey rsa:8192 -keyout host2.key -out host2.csr -subj /CN=host2 -nodes
openssl x509 -req -in host1.csr -out host1.cer -CA ca.cer -CAkey ca.key -CAcreateserial -passin pass:abcd
openssl x509 -req -in host2.csr -out host2.cer -CA ca.cer -CAkey ca.key -CAcreateserial -passin pass:abcd
openssl rsa -in host1.key -pubout -out host1.pub -passin pass:abcd
openssl rsa -in host2.key -pubout -out host2.pub -passin pass:abcd
move host1.* d:\host1
move host2.* d:\host2