Os Serviços de Certificados MS podem ser subordinados à CA criada com o OpenSSL?

15

Eu quero configurar uma autoridade de certificação corporativa para meu domínio. Então eu posso emitir certificados para vários propósitos. Gostaria de seguir a prática recomendada de ter uma autoridade de certificação off-line como raiz e configurar minha autoridade de certificação corporativa como subordinada. Mas parece bobagem licenciar uma cópia completa do Windows para essa tarefa.

O que espero poder fazer é instalar alguma distribuição ao vivo em um disco flash USB e, em seguida, instalar o openssl e configurar minha CA na unidade flash. Quando estiver pronto para construir a chave / certificado raiz, desconectarei o computador da rede e nunca mais usarei esse disco USB em um computador conectado à rede.

Poderei assinar e criar corretamente um certificado de autoridade de certificação subordinada para uma autoridade de certificação corporativa do Windows, que será utilizável. Quais opções eu preciso usar com o OpenSSL para construir a autoridade de certificação e assinar o certificado de autoridade de certificação subordinada corretamente.

Eu tentei pesquisar na Web, e o este foi o único coisa que eu poderia encontrar sobre o assunto. Mas é anterior a 2008, e não tenho certeza se a pessoa foi bem-sucedida.

    
por Zoredache 11.09.2010 / 01:13

2 respostas

14

Sim, funciona muito bem; uma autoridade de certificação do Windows não tem escrúpulos em executar como subordinado a uma raiz não-Windows.

Testado com uma raiz do OpenSSL e um subordinado do Windows 2008 R2 no modo Enterprise.

Algumas coisas para jogar bem com o que o MS CA espera na configuração do OpenSSL:

  • Locais AIA e CDP válidos devem ser aplicados ao certificado raiz, na seção configurada pela propriedade x509_extensions da seção [req] da raiz auto-assinada. Algo ao longo destas linhas:

    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 devem ser CAs, é claro). Isso estará na seção configurada pela propriedade x509_extensions da seção [ca] :

    basicConstraints=CA:TRUE
    certificatePolicies=2.5.29.32.0
    

Então, faremos uma CA para testar.

Crie sua raiz:

openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca

Mexa com sua configuração e crie os arquivos e diretórios necessários na seção [ca] da sua configuração do OpenSSL.

Tudo pronto para levar o lado das coisas da Microsoft; crie uma autoridade de certificação subordinada do Windows com assinatura manual.

Carregue a solicitação de certificado para o servidor OpenSSL. Enquanto você está nisso, baixe o certificado raiz. Importe-o para o armazenamento confiável de raízes - do computador, não do seu usuário!

Emita 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 o diretório config - new certs, arquivo de índice, arquivo serial, etc. Verifique a mensagem de erro.

Se foi, então é isso. Se você não tiver, crie uma CRL e coloque-a no CDP que você configurou acima; Acabei de instalar o Apache e o coloquei no webroot:

openssl ca -gencrl -out /var/www/root.crl

E coloque seu certificado no local da AIA, se ainda não estiver:

cp /etc/ssl/certs/root.pem /var/www/root.pem

Faça o download do certificado subordinado recém-emitido e instale-o na CA com o snap-in MMC da autoridade de certificação. Ele vai se queixar de qualquer problema com confiança ou validação, mas não tem objeção moral em aceitá-lo.

Resultado final; uma CA do Windows em funcionamento sem reclamar do snap-in Enterprise PKI, com um atributo OpenSSL Generated Certificate nos atributos.

    
por 27.09.2011 / 23:20
6

Eu vejo em que você está chegando, mas não acho que o OpenSSL seja a ferramenta certa para o trabalho. Você pode querer consultar Projetos de autoridade de certificação de código aberto , como EJBCA , que são mais focados nessa funcionalidade do que o OpenSSL e possuem documentação específica você pode usar.

Eu não vejo uma razão para o conceito não funcionar, já que tudo o que você está fazendo é assinar o certificado da AC subordinada. Se você estivesse pagando uma CA pública para fazer isso por você, você não necessariamente saberia ou se importaria com o sabor do servidor que eles estavam usando.

Tudo o que você precisa saber é:

  • você pode assinar o certificado do CSR gerado por 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 esteja segmentando
  • você pode gerar uma lista de revogação que é 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 seguir seus documentos da CA para gerar um certificado .p7k de um CSR, deverá ser 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á-lo com segurança em algum lugar que seu sucessor possa encontrá-lo. e desligá-lo periodicamente para garantir que ele seja executado ou transferi-lo para novas mídias / tecnologias. Uma AC raiz pode ter uma vida de 10 ou 20 anos ...

    
por 07.02.2011 / 22:38