大多数操作系统都有一个全局信任库(例如,/usr/local/share/ca-certificates
但此方法需要root权限才能修改,且影响所有用户。
大多数应用程序都有一种在应用程序级别信任证书的方法(例如CURL_CA_BUNDLE
Java 的keytool
)。但是,没有一种方法可以将所有应用程序设置为信任某个 SSL 密钥。
有没有办法让普通用户信任某个 SSL 证书,并将其用于用户运行的所有应用程序?为什么不呢?这似乎很容易实现,而且对于共享基础设施的用户来说非常必要,因为他们可能希望信任其他用户不信任的东西。
用例:我正在使用 HTTPS 拦截(如 MITM)的公司 IT 网络上工作,但他们没有配置 OS 证书存储来信任他们的证书。我在公司服务器上没有 root 权限。到目前为止,我一直在为 Python requests
、Python urllib
、Java、cURL、wget、Firefox、Docker、git 等手动配置一些东西,但这变得很乏味。
答案1
有没有办法让普通用户信任其运行的所有应用程序的某个 SSL 证书?
通常不会。使用哪个信任存储取决于 TLS 堆栈默认值、库默认值、应用程序默认值、应用程序配置...
这似乎很容易构建,而且对于那些可能想要信任其他用户不信任的东西的共享基础设施的用户来说非常必要。
如果这看起来很容易 - 那就去做吧。您将面临信任存储的不同文件格式,并且需要在所有不同的库、应用程序和设置之间进行同步。并不是每个开发人员都故意想与其他开发人员不兼容,但现有的默认设置通常无法在特定用例中正常工作,因此开发人员需要做自己的事情 - 这通常与其他人做的事情不同。
实际上,人们正在努力协调这些事情,比如使用共享系统证书在 Fedora 中。但是,这里似乎没有考虑用户特定的设置,因此这只对某些用例有帮助。
但它变得越来越乏味
是的,不幸的是这就是目前的状态。