DÚVIDA PROJETO JAVA WEB STARt

Boa noite pessoal, já pesquisei demasiadamente e ainda não encontrei solução para o problema. Estou desenvolvendo uma aplicação java desktop. Após pesquisas, verifiquei que utilizar o java web start seria a melhor solução para permitir que a aplicação seja atualizada a partir de um servidor web. Utilizo a ide no netbeans e vi que a opção em propriedades>web start e aplicar os parâmetros de endereço remoto, assinatura, etc, para gerar o arquivo jnlp e html Consegui criar uma chave pelo comando:

keytool -genkey -dname “CN=localhost,O=localhost,C=localhost” -keystore minhachave.keystore -keysize 1024 -alias chave-validity 360 -keypass 123456 -storepass 123456

Já tentei a opção assinatura auto-assinada e também deu erro.

Consigo criar a chave e associá-la ao netbeans para assinar os arquivos. jar. Utilizo .jar de terceiros e observei que está gerando 3 arquivos . jnlp

image

Quando baixo o arquivo launch.jnlp a aplicação roda sem problemas e carrega o formulário inicial, mas ao acessar o formulário que acessa o .jar de terceiro dá erro de segurança e aplicação não executa o módulo. Vi que os três jnlps quando exibem mensagem para permitir a execução são assinados por entidades distintas.

Verificando o arquivo launch.jnlp

<?xml version="1.0" encoding="UTF-8" standalone="no"?> GeraLaudosPlus Alexandre Piazza GeraLaudosPlus GeraLaudosPlus

Vi que gera também estas duas tags que não entendi o porque.

Não sei mais o que fazer

image

Por favor me ajudem.

Qual certificado voce usou pra assinar o .jar? Autoassinado nao adianta, ta certo a segurança barrar.

Não utilizei o certificado digital. Gerei uma chave com o comando:

keytool -genkey -dname “CN=localhost,O=localhost,C=localhost” -keystore geralaudos.keystore -keysize 1024 -alias gera -validity 360 -keypass 123456 -storepass 123456

Ele gera o arquivo jnlp. Dei uma pesquisada aqui e adicionei na lista de exceção de sites e funciona. O erro acontece quando a aplicação vai tentar acessar o módulo que utiliza . jar de terceiros. Não entendi porque foram criados 3 arquivos . jnlp: launch.jnlp, jnlcomponent1.jnlp e jnlpcomponente2.jnlp. O 1 e o 2 são de terceiros. Quando é realizado o download da aplicação e tenta acessar o formulário que acessa métodos do .jar de terceiro dá erro de exceção de segurança também.

image

Os arquivos estão na pasta raiz do servidor, inclusive os .jnlp.

Não adianta usar JAR auto assinado, você precisa de um certificado digital válido gerado por entidade certificadora, hoje em dia até cartórios geram certificados digitais.

Você acha que vale a pena pagar um certificado digital só pra usar Java Web Start para atualizar sua aplicação desktop?

Não é difícil você implementar manualmente a atualização automática de sua aplicação.

Isso é um certificado digital gerado por você mesmo, ou seja, seu JAR foi auto assinado. :wink:

Os JARs de terceiros também precisam estar assinados com o mesmo certificado.

Exato, já tentou assinar os Jars de terceiros com o seu certificado ?

Inicialmente, gostaria de agradecer pela atenção gasta com a dúvida postada. Agradeço aos demais colegas também. Na verdade, pesquisei muito pelo assunto e os posts estão dando uma esclarecida. Sinceramente, já apanhei muito, mas estou achando um caminho. Utilizo o Netbeans para o desenvolvimento. Vi que o mesmo tem a opção em propriedades>java web start para assinar e gerar o jnlp e html de forma “automática”. Vi que ele, teoricamente, assina também os arquivos .jar contido na pasta lib de terceiros. Fica assim:

image

Achei que gerando a chave com o comando acima, seria suficiente. Já vi pelos posts que teria que ser através de uma unidade certificadora. Na verdade, tenho até um token o qual assino digitalmente os documentos no órgão o qual trabalho e expedido pela PRODEMGE.

Quando vou no Netbeans em Run> Clean and Build Project, ele começa a assinar os aruivos jars contido na pasta lib conforme parte do log abaixo.

Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate’s expiration date (2021-10-30) or after any future revocation date.
Signing JAR: C:\GeraLaudosPlus\trunk\GeraLaudosPlus\dist\lib\poi-ooxml-schemas-3.17.jar to C:\GeraLaudosPlus\trunk\GeraLaudosPlus\dist\lib\poi-ooxml-schemas-3.17.jar as gera
jar signed.

Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate’s expiration date (2021-10-30) or after any future revocation date.
Signing JAR: C:\GeraLaudosPlus\trunk\GeraLaudosPlus\dist\lib\xstream-1.4.12.jar to C:\GeraLaudosPlus\trunk\GeraLaudosPlus\dist\lib\xstream-1.4.12.jar as gera
jar signed.

Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate’s expiration date (2021-10-30) or after any future revocation date.
generate-jnlp:
Copying 1 file to C:\GeraLaudosPlus\trunk\GeraLaudosPlus\dist
Copying 1 file to C:\GeraLaudosPlus\trunk\GeraLaudosPlus\dist
Deleting: C:\GeraLaudosPlus\trunk\GeraLaudosPlus\dist\launch.jnlp_
generate-html-preview:
deploy:
No final da execução, gera os arquivos na pasta dist. Não entendi porque gerou jnlpcomponent1 e jnlpcomponent2.

image

Conteúdo do arquivo launch.jnlp
.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> GeraLaudosPlus Alexandre Piazza GeraLaudosPlus GeraLaudosPlus

Se adiciono o codebase=http://localhost/geralaudosx/ na lista de exceção de sites no painel java, funciona.

Mas quando o formulário faz a chamada dos métodos dos arquivos .jars de terceiros, abre a tela de exceção.

image

código fonte arquivo jnlpcomponent2.jnlp

<?xml version="1.0" encoding="UTF-8"?> jnlpcomponent2 PRODEMGE

Não sei mais o que fazer.

Me ajudem por favor.

Pesquisei e não localizei como assinar os arquivos .jars através de comando. Estou utilizando o Netbeans para fazê-lo. Pesquisei e vi que há opção pelo comando Ant do APache. Mas também não achei solução.

Através do jarsigner:
https://docs.oracle.com/javase/tutorial/deployment/jar/signing.html

Fica tranquilo, depois de assinado todos os jars que seu projeto engloba dará certo.

Desculpem reviver este tópico, más estou com o mesmo problema, alguém ai conseguiu ?