我使用Node.js和一些支持RSA签名,验证并生成X.509的密码库创建了证书颁发机构服务器。当我通过在线证书状态协议(OCSP)添加了证书吊销功能时,我想到了为什么必须发送请求并使用OCSP接收响应的原因,因为只有我想知道的不是OCSP请求/响应对象,而是证书状态(很好或被撤销。)
请求不是OCSP响应对象(.PEM或其他),而是请求证书状态值(如HTTP状态代码(200:确定,400:未找到))是否有意义?
答案 0 :(得分:2)
OCSP(在线证书状态协议)是一种标准协议,用于获取由RFC6960统治的证书的当前状态。
协议定义了互换的消息,包括内容,编码,内容类型和HTTP响应代码。
如果您要构建通用PKI,则定义您自己的协议是没有意义的,因为当前的客户端(浏览器,移动设备,软件工具等)都不会使用它,但是希望您有一个标准OCSP服务。
但是,如果要为内部PKI构建自己的客户端工具,拥有非常简单的状态查询服务(例如200 GOOD,401 REVOKED,404 UNKNOWN)可能会很有用。但在那种情况下,请勿将其称为OCSP
答案 1 :(得分:1)
OCSP响应由CA签名的对象的原因是,使依赖方知道该对象以及证书状态是真实的。
如果您的新状态服务收到“序列号为123456789的证书的状态是什么”的查询并返回简单的HTTP响应,则客户端将无法对该响应进行身份验证;实际上,当证书的私钥已被破坏并且应该发送401 REVOKED时,进行替换攻击和发出200 GOOD响应非常简单。
您无法通过HTTPS进行响应来解决此问题,因为这将导致永久的递归状态检查。
如果状态服务器的证书是由不使用您的协议的CA颁发的,则可以使用HTTPS,而可以使用OCSP或CRL分发点之类的替代方法。但这只会使整个解决方案更加复杂,而不是简化状态检查问题。