Erlang检查.pem证书未与.crl文件一起吊销

时间:2018-07-23 13:05:20

标签: ssl erlang

我正在尝试根据.CRL(证书撤销列表)文件中的数据对证书进行离线检查


我检查了pkix validationcrl api,但没有找到使用的任何示例


假设我有提供商列表,提供商的CRL文件列表(已吊销和部分吊销),以及一些要检查的.pem文件


有什么想法应该执行此检查吗?

2 个答案:

答案 0 :(得分:1)

您可以使用crl_checkcrl_cache选项:

ssl:connect("www.google.com", 443,
  [{verify, verify_peer},
   {crl_check, true},
   {crl_cache, {ssl_crl_hash_dir, {internal, [{dir, "/path/to/crls/"}]}}}]).

ssl_crl_hash_dir模块希望找到一个包含所有CRL的目录,其文件名采用非常特定的格式,例如1a2b3c4d.r0,其中前八个字符是证书某些部分的哈希,结尾的.r0是CRL修订版号。 OpenSSL随附的c_rehash utility可以设置与该格式匹配的符号链接。

ssl_crl_hash_dir允许您完全脱机进行CRL检查,而ssl_crl_cache则尝试从指定的服务器下载CRL。


要准备CRL目录,假设我们下载了Google的CRL:

wget http://crl.pki.goog/GTSGIAG3.crl

不幸的是,它采用DER格式,因此c_rehash无法理解(ssl_crl_hash_dir也无法理解)。让我们重新编码:

openssl crl -in GTSGIAG3.crl -inform DER -outform PEM -out GTSGIAG3-pem.crl

现在,我们可以运行c_rehash,将当前目录作为参数:

$ c_rehash .
Doing .
WARNING: GTSGIAG3.crl does not contain a certificate or CRL: skipping

它为我们创建了两个符号链接:

$ ls -go
total 8
lrwxrwxrwx 1  16 Jul 23 16:28 6a909d98.r0 -> GTSGIAG3-pem.crl
lrwxrwxrwx 1  16 Jul 23 16:28 a11dd888.r0 -> GTSGIAG3-pem.crl
-rw-rw-r-- 1 635 Jul 23 03:15 GTSGIAG3.crl
-rw-rw-r-- 1 910 Jul 23 16:28 GTSGIAG3-pem.crl

这些符号链接中的散列是openssl crl -hashopenssl crl -hash_old返回的散列:

$ openssl crl -hash -noout -in GTSGIAG3-pem.crl 
6a909d98
$ openssl crl -hash_old -noout -in GTSGIAG3-pem.crl 
a11dd888

答案 1 :(得分:1)

获取已撤销证书的序列号:

{ok, Bytes} = file:read_file("/Users/Downloads/CA-4E6929B9-Delta.crl").
public_key:der_decode('CertificateList', Bytes). 

返回

 public_key:der_decode('CertificateList', Bytes). 
{'CertificateList',{'TBSCertList',v2,
                                  {'AlgorithmIdentifier',{1,2,804,2,1,1,1,1,3,1,1},
                                                         asn1_NOVALUE},
                                  {rdnSequence,[[{'AttributeTypeAndValue',{2,5,4,10},
                                                                          <<12,28,208,162,208,158,208,146,32,34,208,144,208,160,
                                                                            208,162,...>>}],
                                                [{'AttributeTypeAndValue',{2,5,4,11},
                                                                          <<12,8,208,144,208,166,208,161,208,154>>}],
                                                [{'AttributeTypeAndValue',{2,5,4,3},
                                                                          <<12,49,208,144,208,166,208,161,208,154,32,34,77,65,...>>}],
                                                [{'AttributeTypeAndValue',{2,5,4,5},
                                                                          <<12,14,85,65,45,51,48,52,48,52,55,53,48,...>>}],
                                                [{'AttributeTypeAndValue',{2,5,4,6},<<19,2,85,65>>}],
                                                [{'AttributeTypeAndValue',{2,5,4,7},
                                                                          <<12,8,208,154,208,184,209,151,208,178>>}]]},
                                  {utcTime,"180720162130Z"},
                                  {utcTime,"180720182130Z"},
                                  [{'TBSCertList_revokedCertificates_SEQOF',447646493074184995506808756600724219093179699200,
                                                                            {utcTime,"180715102900Z"},
                                                                            [{'Extension',{2,5,29,21},false,<<10,1,0>>},
                                                                             {'Extension',{2,5,29,24},
                                                                                          false,
                                                                                          <<24,15,50,48,49,56,48,55,49,...>>}]},
                                   {'TBSCertList_revokedCertificates_SEQOF',447646493074184995506808756600724219093196476416,
                                                                            {utcTime,"180715102900Z"},
                                                                            [{'Extension',{2,5,29,21},false,<<10,1,0>>},
                                                                             {'Extension',{2,5,29,24},
                                                                                          false,
                                                                                          <<24,15,50,48,49,56,48,55,...>>}]},
                                   {'TBSCertList_revokedCertificates_SEQOF',447646493074184995506808756600868334281322663936,
                                                                            {utcTime,"180715103000Z"}, ...

检查序列号不在列表中