是否有可能仅当用户未安装客户端证书时才强制 apache 询问密码?
我几乎确信这是可能的,但我无法在任何地方找到任何确认。
是否可以配置 apache 使其像这样运行:
如果用户有客户端证书 - apache 将允许连接到网页,不会出现任何问题或疑问。如果客户端上的用户证书不可用,它将要求进行基本身份验证 - 那么它会要求输入密码吗?
如何配置?我从早上开始就一直在与此作斗争,但没有任何解决办法,甚至只是坚持下去。
答案1
下面是从证书中获取密码文件条目的脚本:(另请参阅 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