perl - 如何使用 Dancer/Starman 或 Mojolicious/Daemon 验证 https 客户端证书?

标签 perl ssl dancer

我正在尝试使用 Perl Dancer 框架使用 HTTPS 客户端证书执行身份验证。 我想接受带/不带证书发送的请求,并对证书 CN 进行验证以继续进行有效响应 (https://medium.com/@sevcsik/authentication-using-https-client-certificates-3c9d270e8326,链接显示了如何在 node.js 中执行此操作,需要与 perl Dancer/Starman/Plackup 非常相似的东西)

我已经使用 Dancer/Plackup 设置了 ssl,但还没有找到一种方法来获取有关对等证书的详细信息以在 Dancer 框架中执行验证

我想实现以下目标:

如果发送请求

没有证书=> 401

有证书但客户端有自签名(CN 与服务器证书 CN 不匹配)=> 401

有证书但客户端证书已使用服务器证书签名(CN 匹配服务器证书 CN)=> 200

最佳答案

在 Dancer 中,您可以使用 request->env->{'psgix.io'} 获取 IO::Socket::SSL 对象,但这对您没有帮助,因为您没有机会将其配置为客户端验证。 IO::Socket::SSL::set_defaults 也没有足够早地运行。

这意味着最好设置Apache httpdnginx终止 TLS。在环境变量中将您需要的证书信息(例如客户端验证结果)传递给 Dancer 应用程序。

关于perl - 如何使用 Dancer/Starman 或 Mojolicious/Daemon 验证 https 客户端证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56321938/

相关文章:

perl - 使用Text::Table Performance格式化SQL查询

perl - 在 Moose 中,如何对 arrayref setter 进行 uniq?

wcf - 调用者未通过服务错误的身份验证 - CRM 2011 部署 wcf 服务方法调用通过 SSL?

wcf - 使用 makecert 命令行时证书将存储在系统中的位置

Perl Dancer2 默认路由失败

mysql - 如何使用 perl 在 Windows V10 上访问 mysql V8?

php - 在 Perl 中匹配 PHP 套接字 SSL 选项

mysql - 模板工具包显示唯一行

钩子(Hook)后的 Perl 舞者

perl - 在Excel电子表格中打印文本