ユーザーがクライアント証明書をインストールしていない場合にのみ、Apacheにパスワードの要求を強制することは可能ですか?
これは可能であるとほぼ確信していますが、どこにも確認が見つかりません。
次のように動作するようにApacheを構成することは可能ですか?
ユーザーがクライアント証明書を持っている場合-Apacheは、問題や質問なしにWebページへの接続を許可します。クライアント側のユーザー証明書が利用できない場合は、基本認証認証を要求するので、パスワードを要求しますか?
それを構成する方法は?私は朝からこれに固執するだけでも解決策なしでこれと戦っています。
証明書からパスワードファイルのエントリを取得するためのスクリプトは次のとおりです( https://serverfault.com/posts/747107 も参照)
.fakehttpsauthに、次のようなエントリを配置する必要があります。
/C=US/ST=CA/O=Doe Inc/CN=John Doe/[email protected]:xxj31ZMTZzkVA
証明書からこのようなエントリを作成するスクリプトは次のとおりです。
#!/bin/bash
# export the certificates in fake auth format
# see https://serverfault.com/questions/533639/Apache-authentication-with-ssl-certificate-and-sslusername
# WF 2016-01-06
fakepass=`openssl passwd -crypt -salt xx password`
for c in *.crt
do
openssl x509 -in $c -text | grep Subject: | gawk -v fakepass=$fakepass '
BEGIN { FS="," }
{
gsub("Subject: ","",$0)
for (i=1;i<=NF;i++) {
f=trim($i)
printf("/%s",f);
}
printf(":%s\n",fakepass);
}
# see https://Gist.github.com/andrewrcollins/1592991
function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s }
function trim(s) { return rtrim(ltrim(s)); }
'
done