
Quero configurar uma autoridade de certificação empresarial para meu domínio. Assim posso emitir certificados para diversos fins. Gostaria de seguir as práticas recomendadas de ter uma CA offline como raiz e configurar minha CA corporativa como subordinada. Mas parece bobagem licenciar uma cópia completa do Windows para esta tarefa.
O que espero poder fazer é instalar alguma distribuição ao vivo em um disco flash USB, instalar o openssl e configurar meu CA na unidade flash. Quando estiver pronto para criar a chave/certificado raiz, desconectarei o computador da rede e nunca mais usarei esse disco USB em um computador conectado à rede.
Serei capaz de assinar e criar corretamente um certificado de CA subordinado para uma CA corporativa do Windows, que será utilizável. Quais opções preciso usar com OpenSSL para construir a CA e assinar o certificado de CA subordinado corretamente.
Eu tentei pesquisar na web e oessefoi a única coisa que encontrei sobre o assunto. Mas é anterior a 2008 e não tenho certeza se o homem teve muito sucesso.
Responder1
Sim, funciona muito bem; uma autoridade de certificação do Windows não tem escrúpulos em funcionar como subordinada a uma raiz não-Windows.
Testado com uma raiz OpenSSL e um subordinado Windows 2008 R2 no modo Empresarial.
Algumas coisas para jogar bem com o que o MS CA espera na configuração do OpenSSL:
Locais válidos de AIA e CDP devem ser aplicados ao certificado raiz, na seção configurada pela
x509_extensions
propriedade da[req]
seção para a raiz autoassinada. Algo nesse sentido:authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
Uma determinada configuração do OpenSSL provavelmente não permite CAs subordinadas por padrão. Altere isso para solicitações assinadas (certifique-se de que isso não esteja em vigor para solicitações que não deveriam ser CAs, é claro). Isso estará na seção configurada pela
x509_extensions
propriedade da[ca]
seção:basicConstraints=CA:TRUE certificatePolicies=2.5.29.32.0
Então, faremos um CA para testar.
Faça sua raiz:
openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca
Mexa em sua configuração e crie os arquivos e diretórios necessários na [ca]
seção de sua configuração OpenSSL.
Tudo pronto para fazer o lado Microsoft funcionar; crie uma CA subordinada do Windows com assinatura manual.
Carregue a solicitação de certificado para o servidor OpenSSL. Enquanto você faz isso, baixe o certificado raiz. Importe-o para o armazenamento raiz confiável - do computador, não do seu usuário!
Emitir o certificado subordinado:
openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)
Se isso não funcionou, sua CA provavelmente tem um problema com a configuração - novo diretório certs, arquivo de índice, arquivo serial, etc. Verifique a mensagem de erro.
Se foi, então é isso. Caso não tenha, faça uma CRL e coloque-a no CDP que você configurou acima; Acabei de instalar o Apache e coloquei-o no webroot:
openssl ca -gencrl -out /var/www/root.crl
E coloque seu certificado no local AIA, se ainda não estiver:
cp /etc/ssl/certs/root.pem /var/www/root.pem
Baixe o certificado subordinado recém-emitido e instale-o na CA com o snap-in MMC da Autoridade de Certificação. Ele reclamará de qualquer problema de confiança ou validação, mas não tem nenhuma objeção moral em aceitá-lo.
Resultado final; uma autoridade de certificação do Windows funcional, sem reclamações do snap-in Enterprise PKI, com uma característica reveladora OpenSSL Generated Certificate
nos atributos.
Responder2
Entendo o que você quer dizer, mas não acho que o OpenSSL seja a ferramenta certa para o trabalho. Você pode querer dar uma olhadaProjetos de autoridade certificadora de código abertocomoEJBCAque são mais focados nesta funcionalidade do que o OpenSSL e possuem documentação específica que você pode usar.
Não vejo razão para o conceito não funcionar, já que tudo o que você está fazendo é assinar o certificado da CA subordinada. Se você estivesse pagando uma CA pública para fazer isso por você, não necessariamente saberia ou se importaria com o tipo de servidor que eles estavam usando.
Tudo que você precisa se preocupar é:
- você pode assinar o certificado do CSR gerado pelo seu subordinado
- o resultado pode ser instalado no próprio subordinado
- você tem um certificado de assinatura raiz que pode ser instalado como confiável em qualquer cliente que você esteja almejando
- você pode gerar uma lista de revogação que será exibida em algum lugar
Não posso dizer que fiz isso, mas tenho certeza de que se você seguir os documentos para gerar um CSR a partir de uma caixa do Windows e, em seguida, seguir os documentos da CA para gerar um certificado .p7k a partir de um CSR, você ficará bem.
A propósito - eu recomendo que você crie sua CA como uma máquina virtual para um hipervisor popular como Hyper-V ou VMware, em vez de um disco de inicialização, certifique-se de armazená-la com segurança em algum lugar que seu sucessor possa encontrá-la e girá-la coloque-o off-line periodicamente para garantir que ele funcione ou transfira-o para novas mídias/tecnologias. Uma CA raiz pode ter uma vida útil de 10 ou 20 anos...