问题标签 [ocsp]

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.

0 投票
1 回答
3304 浏览

openssl - Openssl error Error Loading extension section v3_OCSP in with custom config

First off I have been following Raymii.org's site on 'OpenSSL command line Root and Intermediate CA including OCSP, CRL and revocation' (see: https://raymii.org/s/tutorials/OpenSSL_command_line_Root_and_Intermediate_CA_including_OCSP_CRL%20and_revocation.html#Configuring_the_Intermediate_CA_1) and attempting to combine it with xpersguers git hub page on how to build and test an OCSP responder (see: https://github.com/xperseguers/ocsp-responder/blob/master/Documentation/CertificateAuthority.md)

Everything seems to be working, but I'm running into an issue with requesting a new certificate for the OCSP Server certificate:

The OpenSSL config (./openssl.cnf) file is as follows.

The error is:

if I include the -config options I get something I kinda expect due to me not having a 'req_distinguised_name' section.

Any help would be great.

0 投票
0 回答
101 浏览

digital-signature - OCSP 响应者在证书到期后持有吊销信息

即使在证书到期后,是否可以告诉 CA 的 OCSP 响应者持有证书的吊销信息?

我听说这是真的,但我没有办法验证它。也许有一些 RFC 草案.. 我找不到任何信息。

0 投票
1 回答
108 浏览

security - Why aren't OCSP error messages signed?

I'm trying to understand OCSP. I almost read the entire RFC but I'm not understanding why error message are not signed. The issues are obviously: If an error message isn't signed, a MiTM can simply deny the services replying client's requests with errors like unauthorized, internalError [...]

From RFC I can read:

In case of errors, the OCSP responder may return an error message. These messages are not signed.

without understanding why. Wouldn't be most secure with a sign? Maybe I'm missing the point there, but I think that it would be really more secure.

0 投票
1 回答
1246 浏览

pdf - 无法让嵌入式 OCSP 在 Adob​​e Reader 中进行验证

我正在使用 Bouncy Castle 签署 PDF 并在 PKCS7 中嵌入 OCSP 响应。我用 PDFBox 组装了签名的 PDF,但我终生无法在 Adob​​e Reader 中正确验证生成的文件(无法识别 OCSP)。由于 OCSP 响应程序需要签名请求,因此我必须将响应嵌入文件中。

如果有人有任何指示,将不胜感激。

我认为查看实际签名/证书/OCSP 比查看我的代码更容易。已签名的 PDF 可在此处获得:

https://drive.google.com/open?id=0B_TaSaQW0YXteUgtbUlEa0NhcGc

Base64 编码的签名在这里:

https://drive.google.com/open?id=0B_TaSaQW0YXtaEtPczRROTg4UDA

编辑:

当我在 Adob​​e Reader 中查看证书并检查吊销 > 遇到的问题时,它说:

撤销部分还说:

因此,嵌入式 OCSP 似乎完全被跳过了。

编辑2:

根据 mkl 的建议,我通过更改以下行更新了nonce -extension:

对此:

产生以下DER结构:

但我仍然在 Adob​​e Reader 中收到相同的错误消息。我附上了更新的文档和 base64 编码的签名:

https://drive.google.com/open?id=0B_TaSaQW0YXtVjNqRWlxbXg4T0U https://drive.google.com/open?id=0B_TaSaQW0YXtNC1CblZlUHV4dGs

编辑3:

我将该文件与没有嵌入式 OCSP 响应的另一个版本进行了比较,并在Adob​​e Reader 中遇到的 Prolems中得到了这个错误:

让我相信最初错误的第一部分确实来自于尝试验证嵌入式 OCSP 响应:

我猜有问题的证书将是 OCSP 响应的签名证书。我自己的文档使用以下证书结构签名:

OCSP 的签名结构如下:

文档签名链中的中间证书是否使 OCSP 签名无效?或者我可以以某种方式包含证书链的缺失部分以使其验证吗?或者这可能不是问题?

0 投票
1 回答
107 浏览

ssl - Thawte 证书的 OCSP 装订不起作用

OCSP 装订不适用于 Nginx 上的 Thawte 证书,可能是什么问题?

配置 Nginx 以使用 OCSP 装订。

ssl_trusted_certificate.crt 证书包括拼接的 root.crt 和 middle.crt。

验证请求表明 OCSP Stapling 仍然关闭:

结果:

谁知道这个问题?

0 投票
1 回答
217 浏览

certificate - RFC2560 与 RFC5019

我阅读了一些关于RFC2560RFC5019的文档。我意识到它们都是供 OCSP 检查证书的有效性,但我找不到它们之间的任何差异。

0 投票
0 回答
290 浏览

ios - 如何在 iOS 中准备 OCSP 请求?

我正在准备一个需要创建 OCSP 请求并将其发送到 CA 服务器以检查证书状态的iOS应用程序。

我已将OpenSSL库集成到我的x-code 项目中。OpenSSL 中有一个名为ocsp.h的头文件,它定义了 ocsp 请求和响应结构。

谁能帮我找到任何资源或方法来提出请求并解析 OCSP 的响应?

0 投票
1 回答
5622 浏览

java-web-start - Java Web Start:证书未指定 OCSP 响应者

我尝试通过 HTTPS 将 Java 8 连接到具有自签名 TLS 证书的 Intranet 服务器上的 JNLP 文件。

当 Java Web Start 尝试加载 JNLP 尝试中指定的第一个资源(来自该服务器的文件)时,它会引发异常:

...

任何的想法?

事实上,我们没有指定 OCSP 响应者。但这真的是个问题吗?有趣的是,这适用于我同事的机器(他们只会收到警告)。几天前,我临时安装了 Java 9 来测试一些东西。这有可能混淆了吗?我又卸载了,顺便说一句。

我当前的解决方法是在 Java 控制面板(选项卡“高级”)中将“执行 TLS 证书吊销检查”设置为“不检查(不推荐)”。但我不喜欢那样。

0 投票
2 回答
1688 浏览

facebook - 为什么大网站不使用ocsp装订?

我最近了解了一些关于 ocsp 的知识。我通过以下命令检查站点的 ocsp 装订:

$openssl s_client -connect www.stackoverflow.com:443 -status -servername www.stackoverflow.com

我发现我自己的站点和 stackoverflow 以及其他一些小型站点都有 ocsp 设置。他们OCSP Response Data在命令响应中有字段。

但是当我查看一些像google.com、github.com、facebook.com 这样的大网站时,他们没有这样的字段。我明白了OCSP response: no response sent

那么为什么他们不使用它呢?

0 投票
1 回答
1485 浏览

security - 这种“openssl s_client -connect”的调用实际上是在查询 OCSP 响应服务器以确认证书的当前有效性吗?

我很好奇单行openssl命令行接口的调用是否有能力执行完整的OCSP验证协议,例如查询链中的所有OCSP响应服务器以确认证书的当前有效性。

为了查看是否是这样,我将-CAfile选项指定为/dev/null希望这样可以避免使用任何缓存的证书来代替查找: 正如@pepo 的回答中所解释的,服务器证书链是在 RFC 5246 中指定的基本 TLS1.2 握手的一部分发送的(下面的更新中有更多详细信息)

这给出了输出:

看起来好像openssl在没有任何缓存文件帮助的情况下找到了链中的所有三个链接,因此必须通过 Internet 与代理 (1) GeoTrust DV SSL CA - G3和 (2) GeoTrust Global CA进行通信,以构建链。那是对的吗? 不!这是不正确的!

是否openssl还通过向三个 OCSP 响应者中的每一个发出适当的 OCSP 请求来验证链?

(我的猜测是“不”。我也知道它openssl ocsp ...可以与证书上的手动文本操作结合使用,以一次执行一个链接的 OSCP 验证。但是,这似乎是合理的,甚至更可取的是,这openssl将被写入执行完整的 OCSP 验证,这就是我要问的原因。)

2017 年 9 月 14 日更新:

感谢@pepo 的回答“SSL 服务器(如果配置正确)将发送证书链(根 CA 证书除外)”,我查找了 RFC 5246 并找到了“7.4.2 服务器证书”部分,它解释了“服务器”的内容证书”部分的 TLS1.2 握手:

这是证书的序列(链)。发件人的
证书必须在列表中排在第一位。后面的每个证书必须直接证明它前面的证书。因为证书验证要求根密钥是独立分发的,所以可以从链中省略指定根证书颁发机构的自签名证书,假设远程端必须已经拥有它才能在任何情况下验证它。

此外,感谢@pepo 对该-crl_check_all选项的回答,我尝试了这一点并得到了以下输出:

它因错误而失败unable to get certificate CRL。事实证明这并不重要,因为所选网站启用 了OCSP 装订。

如果我们不-crl_check_all执行CRL 检查,而是 添加-status 请求OCSP 装订的选项,则会收到以下输出:

这表明在服务器端启用了 OCSP 装订,但它似乎只对第一个(叶)证书启用,而不是对第二个证书启用。(无论如何,必须独立验证自签名的第三个证书)。因此,要验证第二个证书,必须使用CRL-checkingOCSP-request-response。由于此特定授权链未启用CRL 检查,因此只剩下OCSP-request-response

感谢@pepo 的回复,让我更了解TLS1.2协议和这些验证授权的方法(按历史顺序列出)之间openssl的关系:

  • CRL(证书撤销列表)检查
  • OSCP 请求和响应
  • OCSP 装订

但是,也提出了一个新问题:

  • 关于在“服务器证书”消息步骤期间服务器发送的OCSP 装订响应以及链中的证书 - 这具有需要验证的签名信息(从下一级开始)。这个签名信息在处理过程中是否真的得到了验证openssl ... -status

更新:2017 年 9 月 15 日

根据这个答案 以及下面@dave_thompson_085 的评论(他已经查看了源代码) ,对“在处理过程中是否真的验证了这个签名信息openssl ... -status?”这个问题的安全答案似乎是否定 的。

是否令人困惑?是的!奇怪的是,“OpenSSL Cookbook (feistyduck, Ivan Ristić)” 对这个问题异常不清楚, 没有显示验证签名的明确方法,同时也没有明确说明签名是否已被验证。相反,对于其他两种类型的撤销检查:

“OpenSSL Cookbook”显示了明确的方法(食谱),以进一步使用openssl. 推断“OpenSSL Cookbok”不包含完全验证装订的 OCSP 响应的配方是一个非常人为的错误,因为它没有必要。

恕我直言,OpenSSL(或任何类似库)将非常负责按照以下优先顺序包含顶级文档

  • (1) 说明 OpenSSL 不提供对 TLS+授权的黑盒解决方案,
  • (2) 关于它提供的解决方案的有限部分的解释(例如,没有授权检查的 TLS 握手),
  • (3) 有关组装 OpenSSL 组件以完成授权检查解决方案的配方的文档。

误解很容易传播。就在几天前,我正在尝试编写一个简单的程序来从我的 Linux Ubuntu PC 发送通知邮件。标准 Python 版本(版本 2 和 3)包括一个 SMTP 和一个“实现”TLS1.2 的 SSL 库。我可以在 10 分钟内编写程序并在调试器中完成它。我可以看到从 python SSL 库到 OpenSSLhandshake()函数的调用,并假设handshake()必须处理所有授权检查,基于 SSL 库和 SMTP 库在不包括授权检查的情况下不会被释放的假设。奇怪的是,SSL 库中的调用代码包含一个后handshake()检查,以确保接收到的证书名称与被调用服务器的名称匹配。"handshake()已经处理了所有的签名验证,等等?”,我想。这个疑问开始了剥离 TLS 安全洋葱层的旅程,从那以后我一直哭泣不已。

我不想尝试重新发明轮子,无论如何这可能会摇摆不定。然而,我似乎找不到任何可用的轮子。然后去哪儿?