Como criar certificados SSL por usuário usando minha própria CA?

3

Esta é a situação: eu tenho um servidor seguro, mas eu só quero fornecer acesso àqueles com determinados arquivos de certificado. Eu já configurei o apache (consulte Como fornecer acesso HTTPS a um servidor da Web que não suporte SSL? ). Eu quero saber como criar certificados diferentes que serão validados contra minha própria autoridade de certificação.

Além disso, posso importar esses arquivos de certificado em um navegador como o Firefox / Chromium?

(Eu quero tudo isso usando openssl, claro)

EDIT: Parte do httpd.conf

httpd.conf

# require a client certificate which has to be directly
# signed by our CA certificate in ca.crt
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile conf/ssl.crt/ca.crt
    
por Tomas 08.08.2011 / 20:23

1 resposta

1

Se eu entendi a pergunta corretamente, você quer o material easy-rsa incluído na maioria das distribuições openssl. Você basicamente precisa construir a parte da CA (parece que você já fez isso, mas você pode querer refazer por esses documentos), em seguida, criar certificados de cliente e assiná-los com o certificado CA (os scripts incluídos cuidam de tudo isso). Você pode obter mais informações aqui:

link

Ou encontre o diretório easy-rsa para a instalação do openssl, ele deve ficar assim:

# cd /usr/share/doc/openvpn-2.0.9/easy-rsa/;ls
2.0       build-dh     build-key       build-key-pkcs12  build-req       clean-all  make-crl     README      revoke-full  vars
build-ca  build-inter  build-key-pass  build-key-server  build-req-pass  list-crl   openssl.cnf  revoke-crt  sign-req     Windows

Execute as instruções no README e use ./build-key para criar seus certificados de cliente. Como você mencionou, você precisará instalar o ca.crt em seus clientes. Acredito que o Chrome usará o sistema openssl, se você quiser, acho que o firefox precisa ter o certificado instalado em seu próprio armazenamento de chaves (na minha experiência).

Eu uso este alias agora para criar chaves do cliente para que eles sejam assinados pela CA antes de enviar o certificado para o usuário:

build_key is a function
build_key () 
{ 
    cd /usr/share/doc/openvpn-2.0.9/easy-rsa/;
    echo "key name?";
    read answer;
    ./build-key $answer
}
    
por 28.08.2011 / 06:44