本文共 6197 字,大约阅读时间需要 20 分钟。
openssl的许多应用程序和函数使用配置文件获取默认的信息和选项,所以,要使用Opnessl,尤其使用openssl的指令。
openssl提供的主要配置文件是openssl.cnf,他集成了openssl所要的配置文件选项的大部分内容。
a.变量值域可支持由"\"或者需要用其他引用符号声明的特殊字符,如果“\"符号需要这样声明:"\"。此外,变量值域还支持在行末尾使用"\"作为连接符号来使得可以使用多行数据作为一个值域。
b.变量值域还支持其他变量值的展开。使用"$变量名"或者“${变量名}的形式”,可以展开当前字段名为
c.如要展开其他字段的变量值,则可以使用"$字段名::变量名"或者“$字段名::变量名}”的形式
dir = ${Sention1::home}/dragonking
f.使用-config选项来指定配置文件,默认的就是openssl.cnf文件。
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | 比如证书请求中的城市和组织名称等字段就可以使用这样的方法制定, |
| PrintableString,T61String和BMPString三种类型 |
| 定义包括PrintableString和BMPString两种字符串类型 |
| |
| 仅使用PrintableString和T61String, |
| | |
| | |
| | 那么req指令不会在要求用户输入一些证书字段的信息, |
| | 那么任何证书域要输入的值被解析成UTF8格式的字符串, |
| | 典型的如验证密码和别名,在Openssl的证书签发工具中, 该字段定义变量的格式跟distinguished_name字段的格式是一样的, |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | 用于读写随机数种子的文件,也可以是一个EGD socket |
| | |
| | 证书失效的日期,格式为YYMMDDHHNNSSZ,该选项没有设置, 该选项和default_crl_days参数必须有一个 |
| | 证书失效的日期,格式为YYMMDDHHNNSSZ, 该选项和default_days,选项至少应该有一个 |
| | 从当前CRL到下次CRL发布以消失为单位的时间间隔, 在生成CRL的时候,该选项和defualt_crl_days参数必须有一个 |
| | 从当前CRL到下次CRL发布以天威单位的时间间隔, 在生成CRL的时候,该选项和default_crl_hours参数必须有一个 |
| | |
| | Openssl定义的用于以签发证书的文本数据库文件, 这个文件通常初始化的时候是空文件,但是确实必须提供的参数 |
| | |
| | |
| | 如果没有提供CRL扩展项,那么生成的CRL就是V1版本的 |
| | 通常情况下,证书签发的特种名称(DN)域的各个参数顺序是跟证书匹配策略的参数顺序一致的, 但是,如果preserve参数值为yes,那么各个参数的顺序就保持跟证书请求的一致 |
| | 如果该值设置为no,那么证书请求中的E-mail信息会被从证书DN域删除, 如果没有设置改参数,那么默认是将E-mail信息放置在DN域中的 |
| | 这是为了兼容老版本的微软IE而设置的参数,在基本废弃不用了 |
| | 该字段的策略决定CA要求和处理证书请求提供的DN域各个参数值的规则 |
| 证书DN域显示方式选项,其可选值跟X509指令-nameopt选项是相同的 | 指定当前需要用户确认签发证书的时候显示的可读证书DN域显示方式,详细的请参考后面介绍x509指令的章节 |
| 证书域显示选项,其可选值跟x509指令-certopt选项是相同的,但是no_signame和no_sigdump总是被默认设置 | 指定当需要用户确认签发证书的时候显示的证书域的方式, |
| | 该参数决定了证书请求中的扩展项信息是否加入到证书扩展项中, 那么所有证书请求的扩展项中没有的项目就会被复制到证书中; 如果值为copyall,那么证书请求扩展项中所有选项都会被复制到证书扩展项中, 如果在证书扩展项中已经存在该项,那么证书扩展项的项目会首先被删除,然后再从证书请求中复制过来。 |
X.509 v3证书已经得到了广发应用,其最大的特色就是增加了扩展项的支持。
nsComment = "This is a comment"
basicContraints = critical,@bs_section
X.509 v3证书的扩展项的主要目的是为了能够对证书和其相关私钥的用途和使用方法做出限制,从而提供证书的课管理型。
扩展项:nsBaseUrl, nsRevocationUrl, nsCaRevocationUrl, nsRenewalUrl, nsCaPolicyUrl, nsSslServerName和nsComment.
例如:nsComment="DragonKing Generated Certificagte"
nsCetType是Netscape定义制定证书用途的扩展项。
| |
| |
| 用于提供不可否认服务的密钥,一般是第三方公正机构使用的密钥 |
| 用于对其他密钥或相关安全信息进行加密,可以也能给予密钥安全传输 |
| |
| |
| 用于验证证书签名的密钥,也就是CA的公钥,这只有在CA证书中才有效 |
| |
| |
| |
d.基本限制(basicConstraints)扩展项
e.扩展密钥(extendedKeyUsage)扩展项
f.主体密钥标识(subjectKeyIdentifier)扩展项
主体密钥标识用于在证书拥有多个密钥集的时候指定密钥属于哪个密钥集。
g.验证机构密钥标识(authorityKeyIdentifier)扩展项
验证机构密钥标识用于构造证书链的时候标识签发机构的证书和密钥,证书中的验证机构密钥标识包括三个部分:密钥ID(keyID)、验证机构DN和CA证书序列号。
如果给定keyid,那么CA签发证书的时候就会复制CA证书的主题密钥标识到新签发的证书中,一般来说,虽然给定了issure值,但是只有keyid出显但复制主体密钥失败或者keyid没有给定的情况下才会执行CA证书DN和序列号的复制操作。
h.主体别名(subjectAltName)扩展项
主体别名为证书提供了形式更加灵活的命名方式,理论上可以包含IP地址、URL、电子邮件及域名等信息作为主体别名。
i.颁发者别名(issuerAltName)扩展项
颁发者别名扩展项为颁发这的证书提供了不同形式的命名方式,他采用的形式跟上述的主题别名基本一致。
j.验证机构信息处理(authorityInfoAccess)扩展项
验证机构信息处理扩展给出了如何处理跟CA相关的信息的详细细节。
k.CRL分布点(crlDistributionPoints)扩展项
CRL分布店扩展项用于指明用户为了验证证书吊销状态而需要查找CRL信息的发布点。
l.证书策略(certificatePolicies)扩展项
证书策略扩展项定义了证书应用的策略,比如用于证书验证的策略。证书策略扩展项目前使用并不多,支持的软件业很少。
openssl中虽然使用PEM作为基本的文件编码格式,但是,由于不同的对象其封装的标准格式不太一样,所以经常会导致读者产生迷惑。
Openssl的编码是基于ASN.1标准的,ASN.1全称为Abstract Syntax Notation One,是一种描述数字对象的方法和标准。ASN.1是一种结构化的数字对象描述语言,她包括了两部分,分别为数据描述语言和数据编码规则。
PEM编码全称是Privacy Enhanced Mail,是一种保密邮件的编码标准。
a.信息转换为ASCII码或其他编码方式,比如采用DER编码
d.使用一些头定义对信息进行封装,主要包含了进行正确解码需要的信息如:
DEK-Info:cipher-name,ivec
—BEGINPRIVACYENHANCED MESSAGE—
—ENDPRIVACYENHANCED MESSAGE—
它在上述第一步采用的是DER编码,所以,从本质上来说,openssl的PEM编码就是在DER编码基础上进行BASE64编码,然后添加一些头尾信息组成。
Openssl的文本数据库结构非常简单,每一行代表一条完整的记录,每条记录对应一个已经签发的证书。一般来说,每条记录包括六个可选的字段,分别是:证书状态、证书生效时间、证书到期时间、证书序列号、证书存放路径及证书的特征名称(DN)值。
序列号文件是ca指令签发证书的时候的依据文件之一,他从该文件读取当前签发的证书的序列号并将序列号文件中的序列号加1.
无论使用Openssl的指令还是其API,随机数文件都是会经常碰到的一个概念。
转载地址:http://oqwdb.baihongyu.com/