Assinando um JAR de Conjunto de Regras de Implementação Java usando Serviços de Certificados do AD

3

Tenho a tarefa de implantar o Java 7 Update 55 junto com um conjunto de regras de implantação Java para todos os clientes Windows do Active Directory. Consegui obter uma configuração de implementação de software Java sólida, mas agora estou com dificuldades para implantar o Conjunto de Regras de Implantação para que o Java possa ser configurado adequadamente. Estou ficando preso ao assinar o arquivo DeploymentRuleSet.jar. Eu tenho um servidor de serviços de certificados do Active Directory distribuindo certificados para todos os clientes e gostaria de usar um certificado emitido por esta autoridade de certificação.

Sempre que passo pelas etapas em este link e eu copio meu arquivo DeploymentRuleSet.jar assinado para um cliente e tento executar um applet Java permitido, estou consistentemente recebendo o erro:" Não é possível verificar a regra de implantação autoassinada Definir jarra ".

Aqui está a ordem exata que eu executei as ações que eu acho que deveria fazer, mas não faz:

  1. Eu criei meu arquivo ruleset.xml com base no modelo fornecido aqui .
  2. Eu baixei e instalei o JDK v1.7.0.60.
  3. copiei o arquivo ruleset.xml para a pasta bin do JDK.
  4. Eu criei o arquivo DeploymentRuleSet.jar emitindo: jar -cvf DeploymentRuleSet.jar ruleset.xml
  5. Gerei um novo keystore e chave: .\keytool.exe -genkey -alias mykey -keyalg RSA -keysize 2048 -keystore keystore.jks -storepass changeit
  6. Gerei um CSR: keytool -certreq -alias mykey -file csr.csr -keystore keystore.jks -storepass changeit
  7. extraí a chave privada do keystore: keytool -v -importkeystore -srckeystore keystore.jks -srcalias mykey -destkeystore myp12file.p12 -deststoretype PKCS12
  8. renomeei a chave privada para uma extensão compatível com o Windows: rename myp12file.p12 myp12file.pfx
  9. Confirmei que minha autoridade de certificação possui um modelo ativo de CodeSigning.
  10. Eu assinei o CSR com o modelo: C:\Windows\system32\certreq.exe -submit -attrib "CertificateTemplate:GeneralCodeSigning" csr.csr mykey.cer myp12file.pfx
  11. Eu RDPed para a CA e exportei o certificado em sua loja pessoal de computadores com o modelo de certificado "Autoridade de Certificação Raiz". Eu acredito que este é o certificado "CA raiz". Eu salvei isso na pasta bin do JDK como ca-cert.cer.
  12. Eu importei a chave assinada e o certificado da CA raiz para o keystore: .\keytool.exe -importcert -keystore keystore.jks -file ca-cert.cer -alias CARoot -storepass changeit
  13. Eu assinei o arquivo JAR: .\jarsigner.exe -keystore keystore.jks -storepass changeit DeploymentRuleSet.jar myKey
  14. Anexei a chave de assinatura ao certificado da CA raiz usando o Powershell: Get-Content .\mykey.cer | % { Add-Content -Value $_ -Path .\ca-cert.cer}
  15. Eu importei as certs combinadas para o keystore: keytool -importcert -keystore C:\Users\user\AppData\LocalLow\Sun\Java\Deployment\security\cacerts -storepass changeit -alias mykey -file ca-cert.cer -noprompt
  16. Eu importei a CA raiz para o keystore: .\keytool.exe -importcert -keystore C:\users\user\AppData\LocalLow\Sun\Java\Deployment\security\cacerts -storepass changeit -alias myKey -file .\ca-cert.cer -noprompt
  17. copiei o arquivo DeploymentRuleSet.jar para um cliente na pasta C: \ Windows \ Sun \ Java \ Deployment.
  18. Solicitei o certificado de assinatura de código de usuário da CA no cliente e o instalei.
  19. Eu abri o Painel de Controle Java e fui para a guia Segurança. Confirmei que tenho o link "Visualizar o conjunto de regras de implantação ativa".
  20. Eu cliquei em Gerenciar Certificados no Painel de Controle Java e na guia Sistema. Em seguida, alterei o tipo de certificado para Signer CA, mas não consegui encontrar nenhum certificado que criei aqui. Deve estar aqui em algum lugar?

Foi quando eu fui para uma URL que deveria ser permitida e recebi o problema do certificado autoassinado. Como você pode dizer, eu já passei por isso muitas vezes. Eu agradeceria qualquer ajuda.

    
por Adam Bertram 10.07.2014 / 22:45

1 resposta

1

Algumas coisas você precisará fazer.

  • Em primeiro lugar, nas lojas de confiança da JVM java, o certificado da CA raiz em sua PKI
    • ambos onde o código assinado será executado e a caixa onde você está fazendo a assinatura de código, que por padrão seria % JAVAHOME% / lib / security / cacerts
      • No Windows, isso geralmente seria % PROGRAMFILES% \ Java \ jre7 \ lib \ security \ cacerts
    • Também deve estar no sistema trust-store para qualquer caixa onde você irá executar esse código
      • Windows: mmc.exe - > Certificados - > Conta de computador - > Autoridades de Certificação Raiz Confiáveis
      • RHEL: / etc / pki / tls / certs /
  • Em segundo lugar, verifique se o certificado de assinatura de código está configurado para assinar códigos
    • Ele deve ter o uso de chave estendida "Assinatura de código" (isso pode ser representado numericamente como OID 1.3.6.1.5.5.7.3.3 estando presente e definido como verdadeiro)
    • O uso principal deve incluir assinatura digital
    • Deve ter a restrição Básica "CA" definida como falsa (isso também pode ser listado como "Tipo de Assunto = Entidade Final") e "crítica" definida como "verdadeira"
    • Ele deve ter um CDP (ponto de distribuição de CRL) listado e que deve apontar para um URL HTTP ou LDAP válido em que a CRL esteja disponível (isso permite que você desconfigure explicitamente um código considerado inadequado depois de ter sido assinado)
por 25.10.2014 / 17:13