我的目标是测试活动用户是否信任某个根证书颁发机构。我目前有一个可行的解决方案,可以通过使用其他几个答案 1,2 组合在一起,但是对我来说似乎很麻烦,所以我要求替代方案(或至少简化)来自(与我不同)知道他们在做什么的人的建议。
我假设这将由非特权用户(即无法安装新软件包的用户)执行,因此我想使用大多数Unix / Linux捆绑了 的实用程序发行版(与certutil
不同)。因此,当前的解决方案使用awk
,grep
和openssl
,它们似乎很通用。
我还要注意的另一件事是,我不关心以这种方式测试证书可能引起的安全隐患。
这是我当前的代码:
awk -v cmd='openssl x509 -noout -issuer' '/BEGIN/{close(cmd)};{print | cmd}'
< /etc/ssl/certs/ca-certificates.crt
| grep -F 'issuer=C = US, O = company, CN = localhost, OU = engineering'
它将awk
与openssl
结合使用以遍历所有现有证书,输出它们的Issuer
,然后将其管道传输到grep
以测试所需的行是否存在。
在正匹配的情况下,我得到的输出是我要查找的字符串,即使我需要的只是一个二进制答案(true
/ false
,{{1 }} / yes
,no
/ 1
,...)。
关于如何以更简单和/或更普遍的方式实现我的目标的任何建议?
答案 0 :(得分:2)
您可以通过仅使用ESP8266WiFi.h
处理所有证书来节省对awk
的呼叫。根据{{3}},以下内容将使用中间转换来提供相同数量的信息(即输入文件中每个证书的颁发者),并可以针对您要查找的数据进行过滤:
openssl
我发现这是一个改进,因为它不使用对openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt \
| openssl pkcs7 -print_certs -noout \
| grep '^issuer=/C=US/O=company/CN=localhost/OU=engineering'
的大量调用(这也将是另一个依赖项),并且awk
的输出似乎比空白的机器可读性更高pkcs7
的原始输出。
请注意,您可以使用上述x509
调用的返回值来判断给定的根CA是否受信任:
grep