我正在尝试获取客户端的证书并使用它签署一个 xml 文件。我已将以下内容添加到我的虚拟主机中:
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +stdEnvVars
这应该允许 mod_ssl 获取用户的证书。但我不知道如何将它传递给我的 django 应用程序。任何帮助表示赞赏。谢谢。
我正在尝试获取客户端的证书并使用它签署一个 xml 文件。我已将以下内容添加到我的虚拟主机中:
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +stdEnvVars
这应该允许 mod_ssl 获取用户的证书。但我不知道如何将它传递给我的 django 应用程序。任何帮助表示赞赏。谢谢。
你应该使用
SSLOptions +StdEnvVars
SSLOptions +ExportCertData
在 apache 配置中有 SSL_CLIENT_CERT 在环境中。
用烧瓶,它会在request.environ['SSL_CLIENT_CERT']
根据对另一个答案的讨论,它可能request.META['SSL_CLIENT_CERT']
适用于 django。
这些 Apache 配置指令意味着mod_ssl 环境变量现在应该在 Django 继承的环境中可用。因此,您可以在 Django 视图中使用os.environ对象访问它们:
import os
client_cert = os.environ['SSL_CLIENT_CERT']
SSL_CLIENT_CERT 变量包含 PEM 编码的客户端证书。
SSLOptions +StdEnvVars +ExportCertData
SSL_CLIENT_CERT 将包含 PEM 编码的证书。
SSL_CLIENT_CERT_CHAIN_n(其中 n 是一个数字)和 SSL_SERVER_CERT 也包括在内,但可能无趣。
遗憾的是,无法准确配置要添加到环境中的项目。只有需要的东西会更加苗条(对我来说,通用名称并且验证成功 - 尽管这可能暗示需要验证,而对您来说,客户端证书 PEM)。