return 没有 OCSP(在线证书状态协议)的证书状态是否可以

Is it ok to return certificate status without OCSP(Online Certificate Status Protocol)


我使用 Node.js 和一些支持 RSA 签名、验证和生成 X.509 的加密库创建了证书颁发机构服务器。当我使用在线证书状态协议 (OCSP) 添加证书吊销功能时,我想到了为什么我必须使用 OCSP 发送请求并接收响应,因为我只想知道的不是 OCSP Request/Response 对象,而只是证书状态(良好或已撤销。)

不是请求 OCSP 响应对象(.PEM 或其他)而是请求证书状态值(如 HTTP 状态代码(200:OK,400:NOT FOUND))是否有意义?

OCSP(在线证书状态协议)是一种标准协议,用于获取由 RFC6960

规定的证书的当前状态

协议定义了交换的消息,包括内容、编码、内容类型和 HTTP 响应代码。

如果你想构建一个通用的 PKI,定义你自己的协议没有意义,因为当前没有客户端会使用它(浏览器、移动设备、软件工具等),但希望你有标准的 OCSP 服务。

但是,如果您打算为内部 PKI 构建自己的客户端工具,那么拥有一个非常简单的状态查询服务(例如 200 GOOD、401 REVOKED、404 UNKNOWN)可能会很有用。但在那种情况下不要称它为 OCSP

OCSP 使用 CA 签名的对象进行响应的原因是,依赖方知道该对象以及证书状态是真实的。

如果您的新状态服务收到 "What is the status of certificate with serial number 123456789" 查询和 returns 简单 HTTP 响应,客户端将无法验证该响应;使得执行替换攻击并放置 200 GOOD 响应变得非常简单,而实际上证书的私钥已被泄露并且应该发送 401 REVOKED。

您无法通过 HTTPS 响应来解决此问题,因为这将导致永久递归状态检查。

如果状态服务器的证书由不使用您的协议的 CA 颁发,而是使用 OCSP 或 CRL 分发点等替代方案,则您可以使用 HTTPS。但这只会使整个解决方案更加复杂,而不是简化状态检查问题。