Mudanças no Java SE 7u51 para Applets e Web Start

Science DukeA atualização do Java 7 update 51 (prevista para Janeiro, 2014) pretende incluir duas alterações de segurança desenhadas para melhorar a autenticação e autorização de aplicações Applets e Web Start. O controle de segurança slider do painel do Java está sendo atualizado para bloquear aplicações RIAs (Applets e Web Start) que não atenderem a estes novos requisitos. Importante: estas mudanças só se aplicam para RIAs, e não para Java no servidor ou em aplicações desktop fora do browser.

Sumário:

  • Você deve assinar todas as RIAs (Applets e aplicações Web Start)
  • Você deve definir o atributo "Permissions" dentro do Manifest
  • Sua aplicação será afetada se é inicializada a partir de um web browser. Sua aplicação não será afetada se ela é executada fora de um navegador web.

Informação completa poderá ser encontrada no release notes do Java 7 update 51, assim que for lançado em 2014.

Desenvolvedores:

A partir do Java 7u51 (Janeiro, 2014), RIAs devem ser atualizadas. As mudanças necessárias são no processo de empacotamento e distribuição; nenhuma mudança em código Java ou API é necessária. O estímulo para essas mudanças se refere à potencial abordagem de re-purposing de aplicações sandboxed, em que colocando permissões em um JAR assinado previne a modificação do seu nível de permissão definido. RIAs devem conter duas coisas:

  1. Assinatura de códigos de uma entidade verificadora confiável Trusted Authority. Todo o código para Applets e aplicações Web Start deve ser assinado, independente dos atributos de permissões.
  2. Atributos no Manifest
    1. Permissions - introduzido no Java 7u25, e obrigatório a partir do Java 7u51. Indica que uma aplicação RIA deve ser executada em modo sandboxed ou requerer todas as permissões.
    2. Codebase - introduzido no Java 7u25 e extremamente recomendável a partir do Java 7u51. Aponta para o local conhecido que hospeda o código (por exemplo: intranet.example.com)

Exemplo de META-INF/MANIFEST.MF

Manifest-Version: 1.0
Created-By: 1.7.0_51
Permissions: sandbox 
Codebase: www.java.com java.com 

Este arquivo manifest é criado quando o JAR  é empacotado, seja através do comando JAR, sua ferramenta de build, ou a sua IDE. 

Exemplo JNLP para apps Web Start

<?xml version="1.0" encoding="UTF-8"?>
<jnlp href="JavaDetection_applet.jnlp">
    <information>
        <title>Java Detection</title>
        <vendor>Oracle Inc.</vendor>
    </information>
    <resources>
        <jar href="JavaDetection.jar" />
    </resources>
    <applet-desc
          name="Java Detection Applet"
         main-class="JavaDetection"
         width="1"
         height="1">
     </applet-desc>
     <update check="background"/>
</jnlp>

Veja o documento Development and Deployment of RIAs para maiores detalhes no formato do arquivo JNLP e o deployment toolkit. Para instruções sobre como assinar seu código, veja o tutorial Lesson: Signing Code and Granting It Permissions.

Administradores de Desktops

Se você é um administrador de desktops que gerencia instalações de softwares como o Java, em diversos computadores, considere o uso dos Rule Sets para cadastrar aplicações Java na whitelist. Deployment Rule Sets permite que você certifique que uma aplicação é conhecida como segura e confiável, mesmo que você não possa atualizar esta aplicação para atender a estes novos requerimentos.

Nota: este artigo foi publicado originalmente no blog do Java SE Product Management Team.

Comments:

Bom dia Amigo, gostaria de saber que poderia me ajudar. depois que atualizei o java para Java 7u25, retorna o erro abaixo.

Missing Permissions manifest attribute for xx.jar
Missing Codebase manifest attribute for xx.jar

Posted by Pedro on September 13, 2013 at 10:02 AM PDT #

Oi Pedro,

Estes atributos devem ser configurados conforme documentação em:

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/no_redeploy.html

Abs!

Posted by Bruno Borges on September 13, 2013 at 11:07 AM PDT #

Ola Bruno Agradeço por ter me respondido,
Eu ja tinha lido sobre esse post que informou e realizei algumas alterações no arquivo manifest.mf coforme abaixo, no entando o mysql conector continua dando esse problema.

Class-Path: mysql-connector-java-5.1.25-bin.jar axis2-kernel-1.5.3.jar
Permissions: all-permissions
Codebase: *

Posted by Pedro on September 13, 2013 at 11:15 AM PDT #

Você precisa "reempacotar" todas as bibliotecas, colocando estes atributos nos arquivos Manifest de cada JAR, ou então criar um único JAR que faz um merge de todos os JARs de bibliotecas que você utiliza na aplicação.

A segunda opção é melhor

Posted by Bruno Borges on September 13, 2013 at 11:18 AM PDT #

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/deployment_rules.html pelo que li será possível criar regras de distribuição que poderão ser aceitas máquina por máquina para aplicações coorporativas, sem a necessidade de assinar.

Porém, dependendo do tamanho da empresa, vale a pena assinar os códigos.

Sabe se é possível usar um e-cnpj para assinar?

Posted by Rafael Rossignol Felipe on November 12, 2013 at 10:49 AM PST #

Boa tarde Bruno, qual o tipo de certificado devemos utilizar para fazer assinatura dos .jars?
.pfx - ECPF?
.cer - SSL?

Posted by Dhiego Tosatti on November 21, 2013 at 09:41 AM PST #

Bruno, implementei as mudanças em minha aplicação, adicionando Permissions: all-permissions e Codebase: * em todos meus jars. Com isso, não vejo mais nenhum warning sobre "Missing Permissions attribute" no console.
Mas ainda é mostrado um warning na tela inicial dizendo que a aplicação será bloqueada em um release futuro por falta do atributo Permissiosn no Manifest.
Estou usando jre 1.7.0_45.
Há algum outro ajuste necessário?

Obrigado,
Luis Sergio

Posted by guest on November 24, 2013 at 04:43 AM PST #

Dhiego / Rafael, para assinar o seu applet ou aplicativo Web Start, é necessário obter um "Java Code Signing Certificate" (Google pode ajudar).

Um exemplo de onde obter certificados de cógios pode ser visto aqui: http://www.sslshopper.com/java-code-signing-certificates.html

Luis Sergio, por favor consulte este post e veja a documentação linkada lá: https://blogs.oracle.com/brunoborges/entry/mudan%C3%A7as_no_java_7u51_para

Posted by Bruno Borges on November 25, 2013 at 04:44 AM PST #

Olá Bruno,

eu fiz um merge de todos meus jars gerando apenas um.
Depois disso não entendi o que devo fazer, pode me ajudar?

Obrigado

Posted by Vinicius on November 26, 2013 at 08:56 PM PST #

Bruno, outra pergunta.
Essa obrigação de assinar os applets e java web start, poderá ser aplicado no futuro também para JavaFx2?

Posted by guest on November 29, 2013 at 03:47 AM PST #

Oi 'guest',

RIA é qualquer aplicação Java (seja ela Swing, AWT, JavaFX, o que for...) que é distribuida como Applet ou via Java Web Start.

Posted by Bruno Borges on November 29, 2013 at 08:16 AM PST #

Bom dia Bruno Borges,

Eu não poderei usar mais os certificados auto-assinados?
Terei que adquirir um novo certificado de uma certificadora?

Posted by guest on January 06, 2014 at 06:18 AM PST #

Isso mesmo. Começando na versão 7u51, Applets e aplicativos Web Start deverão ser assinados por CAs autorizados (exemplo: VeriSign).

Posted by Bruno Borges on January 06, 2014 at 06:20 AM PST #

Obrigado por me responder Bruno!

Só mais uma pergunta!
Eu terei que gerar o .jar com quais permissões?
Elas vão dentro do MANIFEST.MF?

Posted by Thiago Dias on January 06, 2014 at 08:28 AM PST #

Oi Thiago,

Sugiro que você leia a documentação. E sim, essas configurações de permissão vão dentro do MANIFEST

Posted by Bruno Borges on January 06, 2014 at 08:34 AM PST #

Muito obrigado Bruno!
Me ajudou muito!

Posted by Thiago Dias on January 06, 2014 at 08:35 AM PST #

Achei péssimo isto ! porque parece que a Oracle nao esta confiando no usuario .. esta premiando o usuario mal inforamdo e prejudicando o mais bem informado. Nao acho valido orientar o setor para a ignorancia e sempre prevendo o pior no browser.

O fato é que, o certificado custa 500 reais mensais ! o programador tera que pagar isto para ter seu aplicativo rodando no browser ... algo totalmetne inviavel .

Pelo menso eu, migrarei para Adobe Air, infelismente, terei que reescever minahs aplicacoes que antes rodavam em .JAR auto assinada.

Posted by guest on January 15, 2014 at 05:15 PM PST #

Bom dia Bruno,

Após atualizar o Java 7 para o update 51, comecei a ter um problema.

O site tem um ícone para a edição de texto, que abre o editor do Word. Com a nova atualização, o editor não abriu mais.

Pra resolver isso, bastou que eu colocasse o endereço do site em questão como confiável na Aba Segurança do Painel de Controle do Java.

O problema é o seguinte: temos mais de 200 máquinas aqui.
Não existe uma solução única, que possamos fazer em apenas uma máquina e que isso seja replicado para as demais?

Posted by Daniel on January 16, 2014 at 03:18 AM PST #

Oi Daniel,

Em ambientes corporativos como o que você apontou, a solução mais adequada é a configuração via Deployment Rule Set. Veja neste artigo:

https://blogs.oracle.com/java-platform-group/entry/introducing_deployment_rule_sets

A documentação completa está nesta página:

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/deployment_rules.html

Abs

Posted by Bruno Borges on January 16, 2014 at 04:36 AM PST #

Tentei configurar o DRS na minha empresa, sem sucesso nenhum, segui as instruções passadas e nada das coisas funcionarem.
Tive que por fim desistir de usar JavaWS, agora a aplicação fica empacotada em um JAR gordo na rede, o que deixou o sistema mais lento pra carregar.

Posted by Rafael Rossignol Felipe on January 16, 2014 at 04:45 AM PST #

Oi Rafael,

Explique com detalhes o problema. Recomendo usar fórum de discussão da Oracle, escrevendo se possível em inglês, para que possamos ajudá-lo nisso.

O link do forum é este: http://bit.ly/1huevnJ

Depois comenta aqui o link para o seu post para que eu possa dar uma olhada.

Abs

Posted by Bruno Borges on January 16, 2014 at 05:13 AM PST #

boa tarde. Acabei de atualizar meu java e não estou conseguinfo carregar o assinador do site.
Uso diarimente minha assinatura digital para atuar em processos judiciais eletrônicos.
O java me avisa que não pode carrregar o assinador e não me da opção de carrega-lo assim mesmo. Socorro.
Não consigo alterar o nivel de segurança do java, pois não esta conforme imagem no site do java. Socorro, preciso baoxar nivel de segurança de meu java.
Obrigado.
Boa tarde.

Posted by Marcelo Figueiredo on January 16, 2014 at 07:37 AM PST #

Ola a todos, gostaria de saber se obrigatoriamente mesmo sendo aplicação localhost tenho que assinar agora o applet java para rodar via web browser? existe alguma forma de testar o applet "web start" sem adquiri um certificado de código e caso haja necessário qual empresa poderiam me indicar em termos de custo e beneficio.

Posted by Agricio on January 21, 2014 at 06:05 AM PST #

Também tentei usar o DRS e aqui deu esse seguinte erro:

Não é possível verificar o jar do Conjunto de Regras de Implantação autoassinado.

Posted by Giordano Alves on January 22, 2014 at 05:47 AM PST #

Bom dia Bruno,

Situação: Tem um site que eu presto manutenção e ele possui um applet de teclado virtual.

O que já foi feito: Eu estava tentando assinar o .jar que corresponde meu applet da seguinte forma: http://luiz.oeducador.com.br/?tag=java-applet-certificado-assinatura-digital (O ERRO CONTINUA O MESMO), tentei também somente alterar o arquivo MANIFEST com as suas alterações ( O ERRO CONTINUA O MESMO)

Dúvida: Devo incluir da minha aplicação esse arquivo xml(JNLP)? Devo fazer um merge com todos os MANIFEST dos .jars que minha aplicação usa como dependência?

Obrigado!

Posted by Luis on January 29, 2014 at 04:19 AM PST #

Caro Bruno,

Se acaso o applet for instalado e passar mais de 1 ano sem alteração terei de atualizar o certificado só para manter o applet funcionando?

Posted by Nileo on February 04, 2014 at 06:24 AM PST #

Meu programa usa a biblioteca NFE_UTIL do .NET e o JAWIN como interface. Atualizei o meu Java para a versão 7u51 e assinei a applet com icp brasil válido. A minha applet funcionava no Java 7u25, e agora preciso que funcione no Java 7u51. O erro que mostra agora é o seguinte:

"Exception in thread "AWT-EventQueue-2" java.lang.IllegalStateException: Applet's parent container not set up"

Já fiz os procedimentos de re-assinar meus JAR's e colocar os atributos que faltavam no MANIFEST. O que poderia fazer pra resolver este erro?
Obrigado

Posted by Wesley on February 10, 2014 at 06:17 AM PST #

Boa tarde.

Adquirimos um certificado digital e assinamos o nosso jar com ele.Porém ao executar o jar o Liveconnect não consegue ser executado e dar no javascript (Liveconnect call for Applet ID 40 is not allowed in this JVM instance ).Estamos usando a versão 7u51.

Podem me ajudar?

Posted by guest on February 14, 2014 at 09:24 AM PST #

Bom dia, Bruno.

Sou usuário do e-saj, software elaborado pelo softplan. Uso certificado digital para acessar o aplicativo e as informações ali contidas (jurídico). Não estou conseguindo mais o acesso e surge a seguinte informação:
"ESTA APLICAÇÃO SERÁ BLOQUEADA EM UMA FUTURA ATUALIZAÇÃO DE SEGURANÇA DO JAVA PORQUE O MANIFESTO DO ARQUIVO JAR NÃO CONTEM O ATRIBUTO 'PERMISSIONS'. ENTRE EM CONTATO COM O EDITOR PARA OBTER MAIS INFORMAÇÕES."

Como não consigo contato com o editor e tenho urgência no reestabelecimento do meu acesso ao aplicativo, peço uma orientação sua. Obrigado pela atenção.

César

Posted by César Saraiva on February 16, 2014 at 06:33 AM PST #

Post a Comment:
  • HTML Syntax: NOT allowed
About


Bruno has been having fun working with Java since 2000 and now helps Oracle on sharing the technology accross all Latin America. Also plays videogames, does trekking and loves beer.

Follow me on Twitter! @brunoborges

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today