[读书笔记]openssl证书制作

 

 


1. CA命令

 

Openssl中CA功能命令为 ca,所以第一个关注的section就是ca了。这个section非常简单,仅包含一个key:default_ca。

 

三个default_crl_days,default_days和default_md,对于命令行中的crldays,days和md选项,可以通过使用这些选项来覆盖配置文件中设定的值。

 

Policy定义了一个和证书的DN(distinguished name)字段相同的key集合。对于每一个key或字段,有三个合法的取值:match,supplied,或者optional。Match表示证书请求(CSR)中字段必须和CA证书中的字段匹配;supplied表示证书请求中必须包含此字段。Optional表示该字段在证书请求中是可选的。

 

X509_extensions指定了CA签发证书时加入的一个包含该扩展的section。如果缺少该key,openssl创建的是x.509v1证书,但如果存在即使是空,创建的则是x.509V3。例子中唯一包含的扩展就是basicConstraints,我们设置为false,所以我们签发的证书就不能再做ca证书了。

 

 

2. 创建自签名证书

 

  

 

可以签发证书的ca同样可以用来签发CRLs。

Req中Default_bits字段用来指定openssl生成证书的私钥长度为2048字节。如果不指定,默认为512字节。对于CA证书,有必要使用长的密钥更安全。

 

Default_keyfile指定openssl新生成的私钥保存位置。Default_md指定对密钥签名所使用的消息摘要算法。推荐使用SHA1,而不是MD5。

 

Prompt和distinguished_name字段指定openssl从什么地方获取信息填充证书的distinguished name。设置prompt为no,表示指定从distinguished_name字段获取信息。默认是从用户命令行提示输入获取信息,所以这里必须关掉它。Distinguished_name字段定义的root_ca_distinguished_name中的字段值会放入到证书的每个字段中去。

 

最后是x509_extensions指定证书中包含的扩展项。该项中名为root_ca_extensions对应的值为true,表示该证书可以用来签发证书和CRLs。

 

如下命令行中选项很少,因为我们在配置文件中指定了大多数的选项。x509表示生成自签名证书。

 

 

 

当运行该命令时,openssl会提示两次输入密钥来加密私钥文件。

证书生成完成后,可以使用如下命令打印查看证书信息。

 

 

 

3. CSR(Certificate Sign Request)文件生成

很奇怪《network security with openssl》书中介绍生成自签名证书时使用从配置文件中获取DN信息,这里介绍CSR文件反倒是交互式的。其实这里也一样,事先在配置文件中设置好签发证书的DN,就不要命令行中输入那么多信息了。

配置项同req。

 

指定req的扩展为ca

 

 

查看CSR文件,添加的扩展是ca。

 

 

打印信息如下:

 

 

4.  对CSR进行签名:

 

 

 

输出如下:

 

 

如果CSR中添加的req extensions好像没什么用,还是取决ca签发命令中的extension。对于一般的用户证书,那么extension默认为user_cert即可,这里使用的是ca_cert,表示这是一个多级证书,签发的证书可以作为ca再签发下一级证书。

 

 

4.证书验证

生成的证书可以使用openssl命令来简单验证一下,如果是多级证书,可以把多个ca证书拷到ca.crt一个文件中。

 

 

CRL文件待续。

 

参考书籍:network security with openssl

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值