Combinação de certificado SSL e autenticação básica do Apache - senha se nenhum certificado

3

É possível forçar o apache a pedir uma senha apenas se o usuário não tiver certificado de cliente instalado?

Tenho quase certeza de que isso é possível, mas não consigo encontrar nenhuma confirmação em lugar algum.

É possível configurar o apache para agir assim:

Se o usuário tiver certificado de cliente, o apache permitirá a conexão com a página da web sem qualquer problema ou pergunta. Se o certificado de usuário no lado do cliente não estiver disponível, ele solicitará autenticação de autenticação básica - por isso, ele solicitará a senha?

Como configurá-lo? Eu estou lutando contra isso desde a manhã sem qualquer solução, até mesmo para ficar com isso.

    
por Lisek 24.02.2014 / 11:42

1 resposta

1

Aqui está um script para obter as entradas para o arquivo de senha dos certificados: (veja também link )

No .fakehttpsauth, você precisa colocar entradas como:

/C=US/ST=CA/O=Doe Inc/CN=John Doe/[email protected]:xxj31ZMTZzkVA

Aqui está um script para criar essas entradas dos seus certificados:

#!/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
    
por 06.01.2016 / 14:50