转载

学&用 openssl.confnew

学&用 openssl.conf

在 搭建自己的CA服务 – OpenSSL CA 实战 文章中,我们用到了 openssl.conf 。这个配置文件的内容有可能一些读者比较迷惑,这篇文章进一步解释,期望读者们读完之后,自己也会用openssl.conf文件啦。

openssl.conf 文件格式是一个典型的cfg格式,分段,每段都是KV格式(key=value)。

下面开始每个配置的介绍。

[ ca ] default_ca      = CA_default 

ca 段定义ca相关配置,当使用 openssl ca 命令时候,会读取这里定义的配置。上面的定义指向另外一个 CA_default 段。ca的配置项,也可以使用 openssl ca -name 参数重新指定。

[ CA_default ] dir = . certs       = $dir/certsdb new_certs_dir   = $certs database    = $dir/index.txt certificate = $dir/ca_cert.pem private_key = $dir/ca_key.pem serial      = $dir/serial #crldir     = $dir/crl #crlnumber  = $dir/crlnumber #crl        = $crldir/crl.pem RANDFILE    = $dir/private/.rand 

dir

CA 的工作根目录

certs/new_certs_dir/serial

CA 每次颁发新证书存放的目录。这个目录下的证书文件名称是 ${serial}.pem 。这个 serial 是CA中的唯一序列号,可以通过 serial 指定初始值,并在 openssl ca 命令中增加 -create_serial 选项。

在我们的例子中,serial 文件的初始值是 01 ,因此,在 certs 目录下,就存在2个证书:

mao@ubuntu:/home/yunweipai/openssl_ca/certsdb$ ls -al total 24 drwxrwxr-x 2 mao mao 4096 Apr 30 00:25 . drwxrwxr-x 3 mao mao 4096 Apr 30 00:25 .. -rw-rw-r-- 1 mao mao 7115 Apr 30 00:16 01.pem -rw-rw-r-- 1 mao mao 5660 Apr 30 00:25 02.pem 

database

CA 存放所有证书颁发和吊销纪录的文件,在我们的例子中,文件名为 index.txt ,这个文件内容为:

mao@ubuntu:/home/yunweipai/openssl_ca$ cat index.txt V   160428161558Z       01  unknown /C=CN/ST=GuangDong/ L=ShenZhen/O=UProject/OU=UProject/CN=UProject-CA V   160428162516Z       02  unknown /C=CN/ST=GuangDong/L=ShenZhen/O=UProject/OU=Yunweipai/CN=www.yunweipai.com 

VV的意思是有效的(Valid); R 值表示已经吊销(Revoked),当执行 openssl ca -revoke 吊销一个证书时候,会更新此值; E 值表示已经过期(Expired),当执行 openssl ca -updatedb 时候,会将已经过期的证书更新为E 。

160428161558Z证书的到期时间。

01证书的序列号。

unknown证书的文件名,但是这个值好像没有用,都是 unknown 。

/C=CN/ST=GuangDong/L=ShenZhen/O=UProject/OU=Yunweipai/CN=www.yunweipai.com证书的 subject 。

certificate/private_key

CA证书和私钥文件路径。

crldir/crlnumber/crl

吊销证书的路径,序列号

RANDFILE

存放随机数的文件

x509_extensions = usr_cert 

CA颁发证书时候,将 user_cert 段的内容加到所颁发证书的 x509_extensions 字段。

default_days    = 365 #default_crl_days= 30 

证书和CRL的有效天数。

default_md      = sha256 

消息摘要算法,建议使用sha256。

policy          = policy_match  [ policy_match ] countryName             = match stateOrProvinceName     = match localityName            = supplied organizationName        = match organizationalUnitName  = optional commonName              = supplied emailAddress            = optional  [ policy_anything ] countryName             = optional stateOrProvinceName     = optional localityName            = optional organizationName        = optional organizationalUnitName  = optional commonName              = supplied emailAddress            = optional 

定义使用 subject name 规则,哪些值是可选的,哪些是必选的。

[ req ] default_bits            = 4096 default_keyfile         = privkey.pem distinguished_name      = req_distinguished_name attributes              = req_attributes x509_extensions     = v3_ca req_extensions      = v3_req  [ req_distinguished_name ] C = CN ST = GuangDong L = ShenZhen O = UProject OU = Yunweipai CN = www.yunweipai.com emailAddress = web@yunweipai.com 

req 定义 openssl req 生成证书请求的属性,包含 subject name 和 x509_extensions 。

好了,就到这里,通过上面的配置可以搭建一个简单的CA。openssl.conf 里面还有一些配置这里没有描述,有兴趣的同学可以一起探讨。

正文到此结束
Loading...