我正在尝试根据.CRL(证书撤销列表)文件中的数据对证书进行离线检查
我检查了pkix validation和crl api,但没有找到使用的任何示例
假设我有提供商列表,提供商的CRL文件列表(已吊销和部分吊销),以及一些要检查的.pem文件
有什么想法应该执行此检查吗?
答案 0 :(得分:1)
您可以使用crl_check
和crl_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 -hash
和openssl 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"}, ...
检查序列号不在列表中