O Apache precisa saber sobre certificados intermediários para autenticação de cliente?

6

Eu tenho uma hierarquia de certificados a seguir. E eu preciso fazer uma autenticação de cliente no Apache.

.
└── root (CA) - self signed
    ├── intermediate 1 (CA)
    |   ├── client1
    |   ├── client2
    └── intermediate 2 (CA)
        ├── client3
        └── client4

Quem deve armazenar certificados intermediários (um cliente ou um servidor)?

Eu preferiria armazenar apenas uma autoridade de certificação raiz no servidor para validar todos os certificados de clientes. A principal razão é que a lista de CAs intermediárias pode crescer e eu não quero atualizar todas as certs de tempo armazenadas na configuração do Apache.

Isso é tecnicamente viável? O protocolo SSL solicita que os clientes enviem toda a cadeia?

Um pensamento sobre este assunto. Pelo que entendi, quando um cliente autentica um servidor, o servidor envia toda a cadeia para o cliente. Espero que seja simétrico e, quando o servidor precisar autenticar o cliente, é responsabilidade do cliente enviar toda a cadeia.

    
por Victor Ronin 30.04.2014 / 01:08

1 resposta

1

Quando um cliente autentica um servidor, o servidor enviará a cadeia definida em SSLCertificateChainFile , que é sua responsabilidade como administrador do servidor. Então, quando o cliente se identifica, também é responsável pelo envio de toda a cadeia. O Apache precisa apenas saber sobre o certificado de CA, que você define em SSLCACertificateFile . Você pode, a seu critério, também definir cadeias aqui, o que tornará o Apache mais tolerante para os clientes que não enviarem as cadeias por conta própria.

Ao assinar certificados para usuários, verifique se o usuário é fornecido com a cadeia correta. Seu usuário pode construir um .p12 usando o seguinte comando OpenSSL:

openssl pkcs12 -export -in ${SIGNED_CERT} -inkey ${PRIVATE_KEY} \
     -name ${USERNAME} -out ${OUTPUT_P12} -certfile ${PROVIDED_CHAIN}
    
por 01.05.2014 / 10:55