Criando e Assinando um Applet - Erro na exibição

10 respostas
brunopacola

Olá turma, tudo jóia?

Sou novo por aqui e novo também no JAVA. Preciso criar um Applet que acesse alguns programas .exe da máquina do cliente. Após acompanhar as orientações em…
[color=green]Assinatura de Applets - http://www.das.ufsc.br/jacoweb/restrito/documentos/assinatura/index.htm
Executar aplicação local (‘calc.exe’ por exemplo) do cliente via Applet. É possível ? - http://www.guj.com.br/posts/list/140597.java[/color]

…ainda tive alguns problemas. Irei fazer com vocês aqui cada passo…desde já obrigado! =)

Vamos lá…criei um Applet com o código abaixo:

Em seguida peguei o arquivo “AbrirAplicativo.class” gerado e copiei para uma pasta separada e já criei meu código HTML:

Na imagem exibo o diretório…detalhes do arquivo HTML…e em miniatura o resultado no navegador.

[size=18]ASSINATURA DO APPLET[/size]

Conforme leituras realizadas entendi que preciso assinar meu Applet para que possa ter acessos mais privilegiados na máquina do cliente, como o acesso de execução de programas (justamente o que preciso). Então comecei a seguir os passos indicados no tutorial Assinatura de Applets (http://www.das.ufsc.br/jacoweb/restrito/documentos/assinatura/index.htm).

1. Criando o arquivo JAR:

COMANDO: jar cvf C:\Inetpub\wwwroot\AppletJavaFlex\AbrirAplicativo.jar C:\Inetpub\wwwroot\AppletJavaFlex\AbrirAplicativo.class
RESULTADO: AbrirAplicativo.jar

[color=green]REALIZADO COM SUCESSO![/color]

2. Geração o par de chaves (pública e privada)

COMANDO: keytool -genkey -dname “cn=AbrirAplicativoApplet, ou=XXX, o=XXX, l=São Paulo, s=SP c=BR” -alias AbrirAplicativoAppletKey -keystore C:\CHAVES\ChaveAbrirAplicativoApplet -storepass 123456 -validity 7300
RESULTADO: ChaveAbrirAplicativoApplet (armazenado em C:\CHAVES)

[color=green]REALIZADO COM SUCESSO![/color] (Imagem abaixo)

3. Assinar o arquivo JAR

COMANDO: jarsigner -keystore C:\CHAVES\ChaveAbrirAplicativoApplet -storepass 123456 -signedjar “C:\Inetpub\wwwroot\AppletJavaFlex\AbrirAplicativoAssinado.jar” “C:\Inetpub\wwwroot\AppletJavaFlex\AbrirAplicativo.jar” AbrirAplicativoAppletKey
RESULTADO: AbrirAplicativoAssinado.jar

[color=green]REALIZADO COM SUCESSO![/color]

4. Exportar o Certificado da Chave Pública

COMANDO: keytool -export -keystore C:\CHAVES\ChaveAbrirAplicativoApplet -alias AbrirAplicativoAppletKey -file C:\CHAVES\CertificadoAbrirAplicativoApplet.x509
RESULTADO: CertificadoAbrirAplicativoApplet.x509

[color=green]REALIZADO COM SUCESSO![/color]

5. Verificando a Assinatura (e ajustando HTML)

COMANDO: keytool -import -alias AbrirAplicativoAppletKey -file C:\CHAVES\CertificadoAbrirAplicativoApplet.x509
RESULTADO: CERTICADO IMPORTADO.

[color=green]REALIZADO COM SUCESSO![/color] (Segue na imagem o HTML alterado)

6. Configurar o Arquivo Policy (AQUI ACREDITO QUE ESTEJA O MEU PROBLEMA)

Executei o Police Tool e abri o arquivo “.java.policy” que encontrei por uma pesquisa no computador. Segue imagem abaixo:

Cliquei em Add Police Entry e adicionei as seguintes informações:

E finalizei salvando o arquivo.


[size=18]BOM! AGORA SÓ EXECUTAR A PÁGINA, CORRETO?[/size]

Abro a página e o resultado ainda é erro:

Espero que possam me ajudar, obrigado!

Bruno

10 Respostas

E

A mensagem indica o que você tem de fazer.

Em vez de

<applet code="http://localhost/AppletJavaFlex/AbrirAplicativo.class" ....>

você tem de especificar o NOME DA CLASSE, sem o .class (antigas versões do Java PlugIn requeriam o .class, mas isso confunde o Java Plugin a partir da versão 5.0, onde ele acha que “.class” é um nome de classe.)

<applet code="AbrirAplicativo" ....>
brunopacola

Olá entanglement,

Segue sua orientação e mudei meu código conforme a imagem abaixo:

Acessei novamente e ainda tenho uma mensagem de erro:

AGORA É DE ACESSO NEGADO. Onde estaria o erro? Nas edições no Police Tool?

brunopacola

Vou dar um “UP” no tópico…me perdoe se estiver fazendo errado.

Obrigado,

Bruno

E

Resumidamente: alguns métodos do applet (como o método init) sempre rodam sob uma permissão mais baixa que um método que seja invocado, por exemplo, por um botão nessa applet. Portanto, você não pode chamar métodos privilegiados (como Runtime.exec) no método init, mesmo que você assine a applet e use um arquivo de policy.

brunopacola

sugere alguma solução? Ia rodar isso invisivel…pois estaria usando o Flex

E

É uma boa pergunta. Veja se você pode “bypassar” esse problema, criando uma thread a partir do método “init” ou do “start”, e talvez definindo um SecurityManager. É questão de procurar na Internet.

brunopacola

Fala entanglement,
Bom vi sua resposta logo em seguida que você postou…dei uma pesquisa e ainda não encontrei uma solução…alguns conceitos sobre SecurityManager são novos pra mim (to começando no JAVA) então aos poucos estou compreendendo toda a estrutura.

Você ou mais alguém conhece alguma alternativa? Ou pudesse num tempinho aí efetuar um teste de forma a “bypassar” o problema?

Valeu!

G

Estou tendo o mesmo problema… alguem tem alguma solução ???

craniac

Tbm to com o mesmo problema, axei um demo que vem quando instala o jdk, tah na pasta C:\Arquivos de programas\Java\jdk1.6.0_21\demo\jfc\Font2DTest\Font2DTest.html

Axo que algo assim poderia resolver, to tentando, mas sou meio iniciante no java, se alguem puder analisar este código e postar a solução

vlw!!!

G

cara ola… estou te respondendo pois tive muitos problemas
eu acabei resolvendo pq uma outra empresa que fornece a ferramenta GEnexus para a empresa que eu trabalho me entgregaram um applet funcionando no caso eu não consegui terminar o processo…

a applet que eu tava tentando criar nao consegui finalizar… ficando com erro
so consegui mesmo com a applet que me enviaram

:cry:

Criado 29 de janeiro de 2010
Ultima resposta 29 de set. de 2010
Respostas 10
Participantes 4