如何模拟浏览器的X509客户端证书验证而不需要访问HTTP层



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

我在Stackoverflow上看到一个类似问题的回答,说使用自定义头。

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

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

您的应用程序堆栈无法控制SSL,因为它在web服务器上被终止。所有的验证工作都是由web服务器完成的,然后只有SSL_*头才会发送到应用服务器(例如,查找Apache的sslloptions)。如果你不能控制web服务器,你可能甚至不能打开客户端证书要求。我找不到任何选项来打开这个要求通过heroku: https://devcenter.heroku.com/articles/ssl#customdomain-ssl

如果你有SSL_*报头,那么,不管web服务器端验证,你可以验证证书(通常在SSL_CLIENT_CERT报头)使用openssl作为军刀。参见ruby: OpenSSL verify certificate from own CA

中的示例

还要记住,证书验证是检查证书签名和其他属性的过程,例如正式检查。要验证用户,您必须通过DN或E字段将已验证的证书链接到用户,例如

最新更新