学&用 openssl.conf

社区广播:运维派(Yunweipai.com)是国内最早成立的IT运维社区,欢迎大家投稿,让运维人不再孤寂的成长!

学&用 openssl.conf

搭建自己的CA服务 – OpenSSL CA 实战 文章中,我们用到了 openssl.conf 。这个配置文件的内容有可能一些读者比较迷惑,这篇文章进一步解释,期望读者们读完之后,自己也会用openssl.conf文件啦。
openssl.conf 文件格式是一个典型的cfg格式,分段,每段都是KV格式(key=value)。
下面开始每个配置的介绍。

[code lang="shell"][ ca ]
default_ca      = CA_default
[/code]

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

[code lang="shell"][ 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
[/code]
dir

CA 的工作根目录

certs/new_certs_dir/serial

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

[code lang="shell"]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
[/code]
database

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

[code lang="shell"]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
[/code]

V V的意思是有效的(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

存放随机数的文件

[code lang="shell"]x509_extensions = usr_cert
[/code]

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

[code lang="shell"]default_days    = 365
#default_crl_days= 30
[/code]

证书和CRL的有效天数。

[code lang="shell"]default_md      = sha256
[/code]

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

[code lang="shell"]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
[/code]

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

[code lang="shell"][ 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
[/code]

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

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

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部