Regras de Implementação do Java.xml Não Funcionando

1

Uma atualização recente do nosso sistema de cartões de tempo nos obrigou a atualizar todas as nossas estações de trabalho para o Java 7u51 (estávamos no 6u45). Temos outro aplicativo baseado em Java que é essencial para nossos negócios, que agora está enviando avisos de segurança constantes. Todo usuário deve clicar em "Executar" pelo menos uma dúzia de vezes por dia (o código do fornecedor não está assinado sem informações do editor). Isso é inaceitável

Tanto quanto eu posso dizer, a única maneira de resolver isso é usar um conjunto de regras de implantação. Eu pesquisei vários artigos no Google explicando como fazer isso. Todos eles são um pouco diferentes e nenhum deles funciona. Eu criei o arquivo XML, o criei, assinei com um certificado auto-assinado e importei esse certificado para a CA confiável em algumas máquinas de teste. Não importa o que eu faça, vejo o seguinte erro em TODOS os sites habilitados para Java que visito (incluindo o que eu especificamente coloquei na lista de permissões):

"Aplicativo bloqueado pelo conjunto de regras de implantação"
Não é possível verificar o frasco de conjunto de regras de implantação auto-assinado.

Estou absolutamente furioso com a forma como a Oracle lidou mal com Java nos últimos anos. Eu já joguei mais de 200 horas nesse lançamento porque estou sendo prejudicado por um obstáculo após o outro. Os usuários estão chamando a central de atendimento em frustração e os constantes avisos de segurança estão custando tempo e dinheiro para a organização.

De qualquer forma, bastante ranting. Se alguém puder me dizer o que estou fazendo errado, seria muito apreciado.

Aqui estão os passos exatos que tomei:
1) Baixou e instalou o JDK 7u51 (necessário para keytool.exe e jarsigner.exe)

2) Criamos o seguinte arquivo ruleset.xml:

<ruleset version="1.0+">
    <rule>
        <id location="*.ourdomain.com" />
        <action permission="run" />
    </rule>

    <rule>
        <id />
            <action permission="default" />
    </rule>
</ruleset>

3) Empacotou o arquivo XML com o seguinte comando:

jar.exe -cvf DeploymentRuleSet.jar ruleset.xml

4) Criei um certificado autoassinado de RSA com 2048 bits e 50 anos com o comando keytool.exe da seguinte forma: (deixei que ele solicitasse informações de DN; a senha cert é a mesma da senha de armazenamento de chaves)

keytool.exe -genkey -alias SelfSigned -keystore "SelfSigned.jks" -keyalg RSA -keysize 2048 -startdate "2000/01/01 00:00:00" -validity 18262

5) Exportamos o certificado que acabei de fazer com o seguinte comando:

keytool.exe -export -file "SelfSigned.cer" -alias SelfSigned -keystore "SelfSigned.jks"

6) Assinado o arquivo JAR que criei na etapa 3 com o seguinte comando:

jarsigner.exe -keystore "SelfSigned.jks" -signedjar "DeploymentRuleSet.jar" DeploymentRuleSet.jar SelfSigned

7) Criei a pasta C: \ Windows \ Sun \ Java \ Deployment e copiei o arquivo DeploymentRuleSet.jar para ele. Verifiquei, por meio do painel de controle do Java, que o conjunto de regras está sendo aplicado e o certificado é válido.

8) Importei o certificado que exportei no passo 5. Aqui é onde eu me desviei das instruções. Eu não pude usar keytool.exe para importar o certificado. Esta página sugere que a loja user trusted.certs não tem senha e a senha do sistema é " mude". Nenhum dos dois funcionou, então usei a GUI do painel de controle Java para importá-lo para o armazenamento de Certificados Confiáveis do usuário.

    
por Wes Sayeed 24.02.2014 / 23:05

1 resposta

1

Se no Windows: Eu não importei o certificado para a loja Trusted Certificates do usuário no applet Java Control Panel. Eu o importei para a conta Computer do Windows certificates.mmc e a armazenei sob as Autoridades de Certificação Raiz Confiáveis. Estamos usando a política para fazer isso.

    
por 14.03.2014 / 18:37