openssl ca 证书管理

来源:互联网 发布:张伯伦季后赛数据统计 编辑:程序博客网 时间:2024/04/27 23:48

<openssl ca> <fym0121@163.com>

介绍

openssl ca 用于对生成,撤销等管理证书,其维护一个文本数据库。对openssl ca命令的使用需要用到配置文件格式,请参见<conf>。主要用到的配置项有

 [ ca ] default_ca      = CA_default            # The default ca section  [ CA_default ] dir            = ./demoCA              # top dir   工作目录 database       = $dir/index.txt        # index file. 初始状态,这是一个空文件 new_certs_dir  = $dir/newcerts         # new certs dir  新产生的证书存放的目录  certificate    = $dir/cacert.pem       # The CA cert   CA自己的证书 serial         = $dir/serial           # serial no file  序列号文件,CA对每个证书分配一个序列号 private_key    = $dir/private/cakey.pem# CA private key   签发证书的私钥。以上是最主要的 RANDFILE       = $dir/private/.rand    # random number file   随机数文件,这个文件是openssl自己生成  default_days   = 365                   # how long to certify for default_crl_days= 30                   # how long before next CRL default_md     = md5                   # md to use policy         = policy_any            # default policy email_in_dn    = no                    # Don't add the email into cert DN name_opt       = ca_default            # Subject name display option cert_opt       = ca_default            # Certificate display option copy_extensions = none                 # Don't copy extensions from request [ policy_any ] countryName            = supplied stateOrProvinceName    = optional organizationName       = optional organizationalUnitName = optional commonName             = supplied emailAddress           = optional

配置文件所在的路径,可以由环境变量确定

echo %OPENSSL_CONF%     # windowsecho $OPENSSL_CONF          # linux

我们使用默认配置文件,就可以完成对ca命令的测试,所以目录结构安装默认进行建立。

环境

我是Windows上学习openssl的,顶层目录是e:\openssl\foo\ ,我们在此目录下建立3个目录,结构为

├─demoCA
│  ├─newcerts
│  └─private

其中,newcerts目录下存放新签发的证书,private目录下存放ca私钥文件。demoCA是顶层目录,在其下,还有ca自己的证书文件cacert.pem,文件数据库index.txt,序列号文件serial,以及index.txt和serial的old文件。

生成自签名的root ca

E:\OpenSSL\foo>openssl req -new -x509 -out demoCA\cacert.pem -keyout demoCA\private\cakey.pem
然后在demoCA目录下建立两个空文件index.txt和serial,并想serial中写入“01”字符串。至此,我们已经按照默认配置文件打好了环境。

语法

openssl ca[-verbose] [-config filename] [-name section] [-gencrl] [-revoke file] [-crl_reason reason] [-crl_hold instruction] [-crl_compromise time] [-crl_CA_compromise time] [-crldays days] [-crlhours hours] [-crlexts section] [-startdate date] [-enddate date] [-days arg] [-md arg] [-policy arg] [-keyfile arg] [-key arg] [-passin arg] [-cert file] [-selfsign] [-in file] [-out file] [-notext] [-outdir dir] [-infiles] [-spkac file] [-ss_cert file] [-preserveDN] [-noemailDN] [-batch] [-msie_hack] [-extensions section] [-extfile section] [-engine id] [-subj arg] [-utf8] [-multivalue-rdn]

-in / -out    输入证书请求,并输出证书。(最常用)

E:\OpenSSL\foo>openssl ca -in req.pem -out newcert.pem

其中req.pem文件的生成,请参加<openssl req 证书请求>。在证书生成过程中可能需要输入ca自己私钥的密码和两次y(确定)。偶尔在网上看见高人指点,证书请求的DN(Distinguished Name)信息要和自建root ca的DN信息中的Country Name, Locality Name, Organizational Name, Organizational Unit Name保持一直,貌似是自建CA只能对自己单位的同志建立证书吧。Common Name,emailAddress可以标识个人信息。

给别人签发证书后,ca自己当然保留了一个备份,看一下newcerts目录下是不是多了一个文件,这个文件的命名是由serial文件决定的。再看一下serial文件,其中保存的序列号加一了。以前的serial重新命名为serial.old。我们的index.txt文件,现在也有内容了。

-revoke    吊销证书

E:\OpenSSL\foo>openssl ca -revoke newcert.pem
-gencrl   产生证书吊销列表。产生时,需要在demoCA目录下存在crlnumber文件(这个我不清楚)

E:\OpenSSL\foo>openssl ca -gencrl -crldays 7 -out ccsec.crl

-startdate / -enddate       指定证书有效期的开始时间和结束时间,时间格式为YYMMDDHHMMSSZ (the same as an ASN1 UTCTime structure)

-days   证书有效时间

crl的东西我还没找见资料,这里就不写了。谁有关于openssl的资料(当然我可以看官方资料,当官方都是reference,我需要的是Getting Start)发给我,fym0121@163.com谢谢!








原创粉丝点击