クライアントの証明書を取得し、それを使用してxmlファイルに署名しようとしています。仮想ホストに以下を追加しました。
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +stdEnvVars
これにより、mod_sslがユーザーの証明書を取得できるようになります。しかし、それをdjangoアプリに渡す方法がわかりません。どんな助けでも大歓迎です。ありがとう。
クライアントの証明書を取得し、それを使用してxmlファイルに署名しようとしています。仮想ホストに以下を追加しました。
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +stdEnvVars
これにより、mod_sslがユーザーの証明書を取得できるようになります。しかし、それをdjangoアプリに渡す方法がわかりません。どんな助けでも大歓迎です。ありがとう。
あなたは使用する必要があります
SSLOptions +StdEnvVars
SSLOptions +ExportCertData
環境にSSL_CLIENT_CERTを設定するためのapache設定で。
フラスコで、それはになります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であることが暗示されている場合があります)。