运维教程-学&用 openssl.conf

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

学&用 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 里面还有一些配置这里没有描述,有兴趣的同学可以一起探讨。

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。运维教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/08/运维教程-学用-openssl-conf/

为您推荐

发表评论

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