openssl verify 验证证书


介绍

openssl verify 命令对证书的有效性进行验证,verify 指令会沿着证书链一直向上验证,直到一个自签名的CA。

环境

根据建立自签名的root CA,然后再用root CA签发另一个CA(我命名为alice),在用alice签发用户second的证书。最后我们对bob的证书进行验证。

目录结构为

├─alice
│  └─demoCA
│      ├─newcerts
│      └─private
├─demoCA
│  ├─newcerts
│  └─private
└─second

语法

openssl verify[-CApath directory] [-CAfile file] [-purpose purpose] [-policy arg] [-ignore_critical] [-crl_check] [-crl_check_all] [-policy_check] [-explicit_policy] [-inhibit_any] [-inhibit_map] [-x509_strict] [-extended_crl] [-use_deltas] [-policy_print] [-untrusted file] [-help] [-issuer_checks] [-verbose] [-] [certificates]

-CApath directory     指定CA证书所在的目录,这个目录下可能存在证书链中的多个证书文件。为了对这个目录下的证书进行检索,证书文件的命名需要遵循xxxxxxxx.0,其中xxxxxxxx是openssl x509 -hash -in 证书, 的输出值,8个字母或数字。“.0”是要有的。

用root CA对alice的证书进行验证,使用-CApath选项。我们首先要x509命令的 -hash选项计算root CA的hash值。我们假定CApath目录为“CApath”,首先建立目录CApath,我们这次的工作目录依然为e:\openssl\foo.

E:\OpenSSL\foo>mkdir CApath
E:\OpenSSL\foo>openssl x509 -hash -in demoCA\cacert.pem -noout
3ff5a598
E:\OpenSSL\foo>cp demoCA\cacert.pem CApath\3ff5a598.0
对alice的证书进行验证

E:\OpenSSL\foo>openssl verify -CApath CApath alice\demoCA\cacert.pem
alice\demoCA\cacert.pem: OK
对bob的证书进行验证。在对bob证书验证前,需要先对alice的证书进行x509 -hash ,计算证书hash,并重命名复制到CApath目录下。

E:\OpenSSL\foo>openssl x509 -hash -in alice\demoCA\cacert.pem -noout  # 计算hash
b9c7a1d7
E:\OpenSSL\foo>cp alice\demoCA\cacert.pem CApath\b9c7a1d7.0   # 按hash值重命名,并放到CApath指定的目录下
E:\OpenSSL\foo>openssl verify -CApath CApath bob\bob.pem      # 验证
bob\bob.pem: OK

-CAfile  filename    指定CA的证书文件,PEM格式,这个文件里可能不只包含一个证书。如果需要对证书链进行验证,指定的文件中应包含所有的证书。加入顶级CA证书文件名为0.pem,一级CA证书文件为1.pem,二级证书文件为2.pem,待验证的证书文件是eve.pem,那么需要先将0.pem,1.pem证书文件的内容包含到2.pem中。证书文件都是文本文件,简单地使用cat命令就可以进行连接。

cat 0.pem >> 1.pem
cat 1.pem >> 2.pem
使用CAfile选项,对bob证书进行验证

E:\OpenSSL\foo>cat demoCA\cacert.pem >> alice\demoCA\cacert.pem
E:\OpenSSL\foo>openssl verify -CAfile alice\demoCA\cacert.pem bob\bob.pem
bob\bob.pem: OK

其他的,待完善...








你可能感兴趣的:(tools)