问题标签 [certificate-revocation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
firefox - 更改服务器中的自签名证书时 Firefox 的行为
我有一个发布自签名证书的网络服务器(在小型嵌入式设备上运行)。Firefox 连接到服务器并且页面加载正常。我们有一个 Web 客户端,它不断地从服务器请求数据。当服务器证书更改保持浏览器与服务器的连接完好无损时,Firefox 无法识别新证书并使用旧证书与服务器通信。这会导致 Firefox 重置连接,并且 Web 客户端向服务器发出进一步的请求,并且正在进行的连接也失败。这会导致设备在 web 服务器加载多个请求时阻塞。当我按下刷新按钮时,事情就到位了,Firefox 获取了新证书。如何在 Firefox 中启用异常处理程序,或者是否有任何选项可以检测服务器证书的更改,以便浏览器可以开始使用新的服务器证书进行通信。使用 Chrome 或 IE 时我看不到问题,IE 提示支持提及证书已更改。
java - 如何获取证书吊销的日期并将其与 Java 中的签名时间进行比较
我有一个 X509Certificate。而且我需要验证签名时间的日期是否小于撤销时间。这就是我的意思。想象一下,有人窃取了签名者的私钥并签署了一些假文件,但 CA 准时撤销了它。因此,在吊销时间之后签署的证书和所有文件不再有效。为了遵循算法,我需要执行以下操作:
- 从 pkcs7 文件中获取唱歌时间(我已经从这个文件中获得了证书)
- 在证书中找到 CRL URL,下载
- 如果此 CRL,请检查证书的 id 是否存在
- 如果是,获取撤销时间
- 检查签名时间是否小于撤销
它有“现成的”代码吗?因为从证书中获取 CRL 是一场噩梦。我使用的图书馆是 Bouncy Castle。
java - SSH 连接期间的 CRL 检查
我有一个 Android 应用程序,我在其中使用 HttpURLConnection 与我的服务器进行 SSL 连接。服务器证书包含具有有效 URI 的 CRL 分发点。此证书已被吊销,并且 URI 的 CRL 包含此信息。但是在握手期间我没有收到任何异常,我可以从我的服务器接收任何信息。我使用安卓 6 和 7。
我发现一些帖子,其中开发人员写道 Android 默认禁用撤销检查。另外,我看到了一些将 PREFER_CRLS 选项设置为 PKIXRevocationChecker 并将其设置为 TrustManagerFactory 的示例,但似乎它仅适用于 Java SE,当我在我的应用程序中尝试此代码时,我收到初始化 TrustManagerFactory 的异常:
network_security_config.xml 文件是正确的:
这是我的代码:
因此,我尝试了解如何为我的应用启用 CRL 检查。可以通过shell为根设备完成吗?有什么方法可以覆盖您自己的密钥库的参数吗?或者有什么方法可以为系统android密钥库启用它?
另外,我在这里发现了这个错误:https ://issuetracker.google.com/issues/36993981 ,但我没有看到这个问题的任何更新。有人知道适用于 Android 应用程序开发人员的任何解决方案吗?
android - 证书和密钥滥用
几年前我犯了一个错误,将 OpenSSL 证书密钥(.pem 和 .pk8)上传到博客文章中。该密钥用于使用 SignApk.jar 工具对 Android apk 进行签名。有人拿走了它并使用密钥签署了恶意软件应用程序,但糟糕的是我在创建该证书时输入了我的电子邮件地址。这引发了一些问题,因为人们指责我是这些应用程序的创建者。
问题是,我怎样才能恢复这种情况?有些人建议撤销密钥,但我不太明白。据网上了解,撤销需要上传到CA,什么CA?
谢谢你。
c - 撤销 openssl 中的现有证书
我已经创建了 openssl 证书,所以我有 .crt 和 .key 文件。如果我想在现有证书吊销列表中添加这些证书,那么我们该怎么做呢?
我试过下面的代码。
我已经写了上面的代码,我得到了序列号,但没有被添加到“root_mod.crl”文件中的撤销列表中。
你能提出任何建议吗?
macos - OpenSSL:针对在 OS X 10.11.6 El Capitan 上返回“无法获取颁发者证书”的 CRL 验证证书
我正在使用以下脚本在 OS X 10.11.6 El Capitan 上针对 crl 验证证书。
它在 ubuntu 上运行良好,但在尝试在 OS X 10.11.6 El Capitan 上运行时抛出以下错误。
将 wikipedia.org 与 s_client 连接返回:
java - 使用 CertPathValidator 进行签名验证,包括 CRL 撤销
在验证签名的上下文中,我想在文档签名时验证签名证书的有效性。我意识到如果我指定过去的日期,则不使用 CRL 吊销检查方法,而如果我使用当前时间或 null,则吊销检查工作正常。我正在使用下一个代码
我已经启用了系统属性 EnabledCRLDP。此外,OCSP 不是一个通用的解决方案,因为它不起作用的是一些证书。
在过去的时间验证中是否有某些理由不使用 CRL 撤销方法?
在这种情况下,有什么方法可以强制使用 CRL?
c# - Win32 API 证书 CRL-ONLY 吊销检查
我需要执行证书吊销检查。必须允许用户选择仅 OCSP 、仅CRL或两者。该项目使用 C#,但 .NET 不提供开箱即用的独立 OCSP/CRL 检查。
默认情况下,Windows 首先检查 OCSP,如果 OCSP 服务器不可访问,则仅检查 CRL。详情:
这不是必须执行的,也不能改变要求。
Win32 API 显然允许仅使用 OCSP 执行证书吊销检查:
- 启用了 CERT_VERIFY_REV_SERVER_OCSP_FLAG 的CertVerifyRevocation 。
对于仅限CLR 的检查,我没有看到任何类似的选项。
在我看来,唯一的方法是使用
- CryptGetObjectUrl提取 CRL url
- CryptRetrieveObjectByUrl下载 CRL
- CertVerifyCRLRevocation执行验证
问题:
有没有其他更简单的方法来使用 Win32执行仅CRL检查?
笔记:
例如,像 Bouncy Castle 这样的第三方库并没有做 Windows 为撤销检查所做的一切,我不想重新发明轮子。
这就是我坚持使用 Win32 方法的原因,因为它们已经处理了很多事情:增量 CRL、装订 OCSP、缓存、超时、重试、可配置性等。
c# - 了解证书吊销列表
我试图弄清楚证书重定位列表如何运作以及它们如何更新。
所以说我的服务器 xyz.com 有一个证书,其 CRL 分发点配置为 myissuer.com/thelist.crl
现在我在连接到 xyz.com 时使用 wireshark 监控了我的网络上的通信,我没有看到任何对 myissuer.com 的调用来获取 CRL。
所以我有两个问题:
对 CRL 分发点的调用实际发生的时间和频率是多少?
如果我手动下载并安装此 CRL 文件,我的客户端是否仍会尝试连接到配置的 CRL 分发点?
java - 使用 BouncyCastle 接受过期的 CRL
我正在使用充气城堡离线验证 X509 证书,并且遇到了旧 CRL 的问题。我还没有发现接受过期的 CRL 的可能性,在我看来,如果证书被吊销,它应该在 CRL 到期后保持吊销状态。此外,如果 CRL 为空,我只想接受这一点,此时我无法获得更新的 CRL。
只是为了澄清,这将是用例:
- 2015年创建证书,有效期2015-2020
- 在 2017 年用 CRL 吊销证书,密钥被盗,只创建了 1 年的 CRL,因为我犯了一个错误或计划滚动并且永远不会解决它
- 检查2019年的证书,CRL过期了,bouncy castle再次接受被吊销的证书——这显然不是我想要的
目前我将撤销检查设置为 false 并自己执行检查。我在任何地方都没有在网上找到任何关于此的内容。
这是我的代码:
确切的例外是: