2

我正在尝试获取客户端的证书并使用它签署一个 xml 文件。我已将以下内容添加到我的虚拟主机中:

SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +stdEnvVars

这应该允许 mod_ssl 获取用户的证书。但我不知道如何将它传递给我的 django 应用程序。任何帮助表示赞赏。谢谢。

4

3 回答 3

1

你应该使用

SSLOptions +StdEnvVars
SSLOptions +ExportCertData

在 apache 配置中有 SSL_CLIENT_CERT 在环境中。

用烧瓶,它会在request.environ['SSL_CLIENT_CERT']

根据对另一个答案的讨论,它可能request.META['SSL_CLIENT_CERT']适用于 django。

于 2015-05-23T17:52:43.293 回答
0

这些 Apache 配置指令意味着mod_ssl 环境变量现在应该在 Django 继承的环境中可用。因此,您可以在 Django 视图中使用os.environ对象访问它们:

import os
client_cert = os.environ['SSL_CLIENT_CERT']

SSL_CLIENT_CERT 变量包含 PEM 编码的客户端证书。

于 2011-09-23T09:43:42.250 回答
0

SSLOptions +StdEnvVars +ExportCertData

SSL_CLIENT_CERT 将包含 PEM 编码的证书。

SSL_CLIENT_CERT_CHAIN_n(其中 n 是一个数字)和 SSL_SERVER_CERT 也包括在内,但可能无趣。

遗憾的是,无法准确配置要添加到环境中的项目。只有需要的东西会更加苗条(对我来说,通用名称并且验证成功 - 尽管这可能暗示需要验证,而对您来说,客户端证书 PEM)。

于 2015-07-10T22:37:45.303 回答