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.