首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >可信CA证书的OpenSSL合理默认设置?

可信CA证书的OpenSSL合理默认设置?
EN

Stack Overflow用户
提问于 2012-04-10 12:05:52
回答 3查看 15.3K关注 0票数 14

是否有一种方法可以使用一组合理的可信CA证书来设置OpenSSL上下文(SSL_CTX),而无需自己分发它们?我不想让他们跟上时代的步伐。国际海事组织的任何现代操作系统都应该提供“为我提供可信的CA证书”作为服务,但我不知道是否真的是这样。

我不介意编写这段代码三次(一次是针对Windows,一次是针对Mac,一次是针对Linux),但我更愿意将其限制在这一点上。特别是,我不想尝试编写一些代码来窥探安装了哪些浏览器,并试图提取它们所信任的证书。(显然是很容易搞错。)

最近版本的Linux的答案似乎是用/etc/ssl/certs/ca-certificates.crt调用/etc/ssl/certs/ca-certificates.crt(如果存在该文件)。

Windows和Mac有简单的答案吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-26 12:38:20

您可以使用“剧本”从Mozilla (从Curl's维护者的回答)转换列表。根据它的代码的说法,在包含证书之前,它似乎要检查证书是否可信。

票数 5
EN

Stack Overflow用户

发布于 2013-10-26 13:36:49

以下是我最后所做的:

在Windows上:使用CertOpenSystemStore从WindowsCertOpenSystemStore证书存储中获取证书,使用CertEnumCertificatesInStore循环它们,从CERT_CONTEXTpbCertEncoded字段获取X 509编码的原始证书,使用d2i_X509创建OpenSSL X509结构,并使用X509_STORE_add_cert将其添加到OpenSSL证书存储中。Windows函数都可以从crypt32.dll中获得。

在Mac上:使用"/System/Library/Keychains/SystemRootCertificates.keychain"SecKeychainOpen密钥链获取证书,使用SecKeychainSearchCreateFromAttributes为密钥链中的证书创建迭代器,使用SecKeychainSearchCopyNext迭代,使用SecItemExport获取原始X509证书,使用d2i_X509创建OpenSSL证书,并使用X509_STORE_add_cert将其添加到OpenSSL存储中。Mac函数可以从/Systems/Library/Frameworks/Security.framework/Security中获得。

更好的方法可能是创建一个带有回调的OpenSSL X509_STORE,该回调使用OS函数来验证单个根证书,而不是将它们全部复制过来,但我还没有尝试过。

票数 12
EN

Stack Overflow用户

发布于 2012-04-26 12:30:53

在OS上,您可以从用户的密钥链中获得用户信任的证书的信息。这里有一个链接,其中包含了一些关于使用Cocoa收集该信息的非常好的信息:

在密钥链中获取证书

如果Cocoa不是满足您需求的ok依赖项,并且您想直接从命令行执行所有操作,那么可以使用certtool实用工具--参见man certtool和其他在线文档来了解它。若要列出用户登录密钥链中的所有证书,请执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
certtool y k=login.keychain

或者获取内置的受信任系统根的列表:

代码语言:javascript
运行
AI代码解释
复制
certtool y k=/System/Library/Keychains/SystemRootCertificates.keychain

也许

代码语言:javascript
运行
AI代码解释
复制
certtool y k=/System/Library/Keychains/SystemCACertificates.keychain

我确信还有其他方法可以使用系统接口来获取这些信息。

在Linux方面,是的,/etc/ssl/certs/ca-certificates.crt是正确的选择。当安装ca-certificates包时,该文件将存在于Debian衍生产品(inc. Ubuntu变体)上,我不知道如何在基于红帽子的系统中正确地实现该文件。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10095676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文