x509v3_config
X509 V3 certificate extension configuration format
一些openssl的命令可以通过配置文件添加扩展到证书或者证书请求里面
配置文件的格式
【section】
extension_name=[critical,] extension_options
extension_options取决于extension_name
有四种类型的扩展
- string extensions, 就是一个字符串,这个串要么就是一个值,要么就是怎么获取这个值
- multi-valued extensions, 这种有长和短两种格式,短格式就是用逗号分割的名值列表,长格式是@section名表面值在另外一个section中
- raw 略
-
?arbitrary extensions 略
短:basicConstraints=critical,CA:true,pathlen:1
长:basicConstraints=critical,@bs_section
? ? ? ? [bs_section]
? ? ? ? CA=true ? ? ? ? pathlen=1
标准扩展
- basicConstraints
- keyUsage
- extendedKeyUsage
- subjectKeyIdentifier
- authorityKeyIdentifier
- subjectAltName
- issuerAltName
- authorityInfoAccess
- crlDistributionPoints
- issuingDistributionPoint
- certificatePolicies
- policyConstraints
- inhibitAnyPolicy
- nameConstraints
- noCheck
- tlsfeature
生成带有SAN(subjectAltName)的证书
SAN简单来说就是一组名字集合,SAN里面的这些名字提供了验证证书的一个约束,验证证书的一方可以验证这组名字是否合法。里面可以包含email,URI,DNS,RID(a registered ID: OBJECT IDENTIFIER),IP,dirName(a distinguished name)
basicConstraints也是一个重要的扩展,basicConstraints=critical,CA:TRUE, pathlen:0,CA为TRUE表示这个证书是否是CA证书,是CA证书就可以作为CA给别人签发证书,pathlen的值表明CA下级的CA的级数,为0就不能有下级CA
自签名ca 证书和key openssl req -newkey rsa:2048 -nodes -x509 -days 365 -subj "/CN=CN/ST=Hubei/L=Wuhan/O=Tencent/OU=QQ" -out ca.pem -keyout ca-key.pem
中间ca 证书请求和key openssl req -newkey rsa:2048 ?-nodes -new -subj "/CN=CN/ST=Hubei/L=Wuhan/O=Tencent/OU=QQ.1" \ -addext "basicConstraints = critical, CA:true, pathlen:10" \ -addext "subjectAltName = IP:192.168.146.128,IP:127.0.0.1" \ -addext "extendedKeyUsage=serverAuth,clientAuth" \ -keyout mid-ca-key.pem -out mid-ca.csr
上面扩展也可以用下面两个代替 -config 配置文件路径 -reqexts section名字
用ca签发请求 生成证书 openssl x509 -req -days 365 -in mid-ca.csr -out mid-ca.pem \ ? -CA ca.pem -CAkey ca-key.pem -CAcreateserial -extfile mb.conf -extensions mb
mb.conf文件内容 [mb] basicConstraints = critical, CA:true subjectAltName = IP:192.168.146.128,IP:127.0.0.1 extendedKeyUsage=serverAuth,clientAuth ?
|