文本数据库
文本数据库:以文本的方式记录CA已经签发的证书的状态和摘要信息,它是普通的文本文件,需要时创建并对文本名字和后缀没有特殊的要求。
创建文本数据库的方式:
- 手动创建
- 运行OpenSSL的Pel脚本CA.pl
管理和读写文本数据库的接口函数目录:crypto\txt_db目录下:
文本数据库的数据结构(每一行代表一条完整记录):
[证书状态] [证书生效时间] [证书到期时间] [证书序列号] [证书存放路径] [特征名称(DN)值]
证书状态可选值:V(Vaild),有效
R(Rovoked),吊销
E(Expire),过期
证书生效时间:UTC时间
证书到期时间:UTC时间
证书序列号:十六进制格式
证书存放路径:生成证书存储的具体位置,若标记为unknown(ca指令指定了证书输出文件)不影响证书库的正常使用
特征名称(DN)值:证书主题名,OpenSSL必须保证签发的证书具有不同的DB值
eg:R 031105233205Z 9510092233205Z 01 cets/000000001 /CN=DragonKing
若吊销证书的时候使用了吊销原因的选项(ca指令的crl_reason选项),那么被吊销的证书记录中,可能会增加一到两个字段注明吊销原因。
对于过期的证书,文本数据库并不会自动更新,需要使用ca指令的-updatedb选项进行更新,一般来说,在生成CRL之前,都应该使用
-updatedb进行更新,
序列号文件
序列号文件:ca指令签发证书的时候,需要从序列号文件签发读取当前签发的证书的序列号并且将序列号文件中的序列号加1,确保证书序列号的递增,不重复。序列号文件是文本文件,里面只包含16进制表示的数字,若序列号从零开始,那么就填“00”。
序列号文件路口需要在openssl.cnf的serial字段配置。
随机数文件
随机大数文件:为了生成不同的随机数,增强随机数的随机性,需要采用不同的随机数种子。随机数文件就是OpenSSL提供随机数种子的文件。无论什么文件,都可以作为OpenSSL指令要求的随机数文件,因为OpenSSL是将之当成二进制文件处理的(什么内容并不重要)。
即使执行指令参数中没有输入随机数文件且在openssl.cnf中没有查找到默认随机数文件,OpenSSL指令也会从屏幕状态取得随机数种子。
口令输入方式
OpenSSL的指令中,通常采用"-pass"的参数来输入口令,这些参数的形式有5种,分别对应5种不同的口令获取途径:
- 提示输入:从指令解密提示输入口令。
- 直接输入:直接在指令参数种输入口令。
-pass pass:12345678
- 环境变量输入:将口令放在环境变量种,使用的时候只要记住环境变量名就可以了。
# passedvar是环境变量名
-pass env:passwdvar
- 文件输入:指定获取口令的文件名,然后将文件名的第一行作为口令。
# filename是文件名
-pass file:filename
- 描述符输入:通用的描述符作为获取口令的来源。
# number是文件描述句柄的编号
-pass fd:number