如何在不访问HTTP层的情况下模仿浏览器X509客户端证书validation

我正在通过X509客户端证书阅读有关身份validation的文章,但由于我在Heroku上运行应用程序,因此无法让服务器请求客户端证书,因此我无法访问HTTP层。

我在Stackoverflow上看到了对类似问题的回复,该问题表示使用自定义标头。

我想模仿使用自定义标头的应用程序服务器validation客户端证书。 我正在使用Ruby,所以如果有人知道已经完成此任务的库,那将会有所帮助。 否则,是否可能,我需要什么资源? 我发现了这个问题,但它是关于validationSSL证书,我不确定是否适用。

对于这个问题的模糊性我很抱歉,但我正处于这个问题的起点。

您的应用堆栈无法控制SSL,因为它已在Web服务器上终止。 所有validation工作都由Web服务器完成,然后只有SSL_ *标头转到应用服务器(例如,查找Apache的SSLOptions)。 如果您无法控制Web服务器,您甚至可能无法启用客户端证书要求。 我找不到任何通过heroku打开此要求的选项: https ://devcenter.heroku.com/articles/ssl#customdomain-ssl

如果您有某种方式获得SSL_ *标头,那么无论Web服务器端validation如何,您都可以使用openssl作为军刀来validation证书(通常在SSL_CLIENT_CERT标头中)。 例如,在ruby中看到这一点: 来自自己的CA的OpenSSLvalidation证书

另请注意,证书validation是检查证书标志和其他属性(例如正式检查)的过程。 要对用户进行身份validation,您必须通过DN或E字段将该已validation的证书链接到用户。