Sim, funciona muito bem; uma autoridade de certificação do Windows não tem escrúpulos em executar como subordinado a uma raiz que não seja Windows.
Testado com uma raiz OpenSSL e um Windows 2008 R2 subordinado no modo Enterprise.
Algumas coisas a serem boas com o que a CA da Microsoft 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 (verifique se isso não existe para solicitações que não devem 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 uma autoridade de certificação 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
Brinque com sua configuração e crie os arquivos e diretórios necessários na [ca]
seção de sua configuração do OpenSSL.
Tudo pronto para dar as caras da Microsoft; crie uma autoridade de certificação subordinada do Windows com assinatura manual.
Faça o upload da solicitação de certificado no servidor OpenSSL. Enquanto você estiver nisso, faça o download do 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, é provável que sua CA tenha 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. Caso contrário, faça uma CRL e coloque-a no CDP que você configurou acima; Acabei de instalar o Apache e o atolou 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
Baixe o certificado subordinado recém-emitido e instale-o na CA com o snap-in MMC da Autoridade de Certificação. Ele se queixará de quaisquer problemas 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 indicador OpenSSL Generated Certificate
nos atributos.
![trabalhando-ca](https://i.stack.imgur.com/3EGhs.jpg)