gpt4 book ai didi

ssl - Erlang 检查 .pem 证书未被 .crl 文件撤销

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:13 25 4
gpt4 key购买 nike

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


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


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


关于如何实现这项检查有什么想法吗?

最佳答案

您可以使用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 修订号。 c_rehash utility ,随 OpenSSL 一起提供,可以设置与该格式匹配的符号链接(symbolic link)。

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

它为我们创建了两个符号链接(symbolic link):

$ 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

这些符号链接(symbolic link)中的哈希值是由 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

关于ssl - Erlang 检查 .pem 证书未被 .crl 文件撤销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51479571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com