Apache SSL 证书和基本身份验证组合 - 如果没有证书则输入密码

Apache SSL 证书和基本身份验证组合 - 如果没有证书则输入密码

是否有可能仅当用户未安装客户端证书时才强制 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

相关内容