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

在学习OpenSSL的过程中经常需要建立CA,再用此CA给用户签发证书,这个过程总是反复进行,让人不胜其烦,所以写下了这个批处理把以上过程自动化。

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

有两个命令可以用CA的身份给客户签发证书:CA命令和x509命令,本文会分别介绍,其中又细分为CA根证书签发和证书链签发两个部分,也都给出了执行代码,注意有些命令行很长,看起来是多行,所以不要单行复制,而是从头至尾复制全部代码,然后粘贴到Windows命令行窗口执行即可(倒数第一行代码的最后要有回车),或者也可保存为批处理。

需要注意的是,批处理会在D盘根目录创建rca、ca1、ca2、ca3、host1、host2这几个目录,为了保证干净的实验环境,每次执行批处理都会先删除它们然后重建,所以不要在这些目录里保存重要资料。切记!

用ca命令签发证书

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

实验准备:用ca命令签署证书会用到配置文件,默认是C:\Program Files\Common Files\SSL\openssl.cnf(可以通过环境变量 openssl_conf来指定),该文件里的几个“节”(section,由中括号圈定)需要特别注意,如果你的取值与此不同请修改,因为代码是按照这些取值设计的,#后面的是注释,不必理会。

[ CA_default ]

            dir    = ./demoCA   # 顶层目录,保存一切的起点

            database  = $dir/index.txt  # 索引数据库文件名及所在目录

            new_certs_dir = $dir/newcerts  # 存放新证书的目录

            ertificate  = $dir/cacert.pem # CA证书文件名及所在目录

            private_key  = $dir/private/cakey.pem # CA私钥文件名及所在目录

            serial   = $dir/serial   # 已签发证书的序列号(16进制)所在目录


            [ policy_match ]

            countryName   = optional    # 国家

            stateOrProvinceName = optional    #

            organizationName  = optional    # 组织名称

            organizationalUnitName = optional    #组织单位名称

            commonName   = supplied    # FQDN

            emailAddress   = optional    #电子邮件


            [ v3_ca ]

basicConstraints = critical,CA:true




猜你喜欢

转载自blog.51cto.com/9843231/2456903
今日推荐