Certificação Digital em Aplicações Java ME

Em uma thread de discussão do SouJava sobre assinatura de aplicações Java ME com certificados, lembrei-me de um trabalho que fiz um tempo atrás sobre isso, e colaboro com a discussão. Respondi esta mensagem na lista de email, para ser arquivado e coloco no meu blog também.

Recentemente tive de investigar isso para celulares motorola e outros fabricantes, onde uma aplicação envia mensagens SMS e não é para aparecer um alerta solicitando permissão para efetuar a conexão. Para isso é necessário assinar a aplicaçao com um certificado emitido por uma autoridade certificadora (CA), e este CA já deve existir no telefone celular (geralmente na parte de configurações e segurança)

Tem um documento no site de desenvolvedores da motorola “Midlet Testing and Signing” que mostra bem os passos para assinatura de aplicações em telefones motorola. Recomedo a leitura.

Na página 10 do documento é possível requisitar um certificado de desenvolvimento (é um processo burocrático). Note que esse processo será usado para a obtençao de um certificado de produção. E mostra que o telefone motorola suporta certificados emitidos pelo CA da motorola, CA da operadora ou UTI (Unified Testing Initiative, do programa Java Verified). O CA da motorola somente é usado, quando existe um acordo como partner da morotola (envolvendo contratos, NDA, etc) e quando usar alguma característica específica da API da motorola.

Sobre o UTI, é burocrático também e caro. Pois exige o envio da aplicação para o UTI, então pode-se escolher uma empresa para testar a aplicação eles testam e se der qualquer erro, eles cancelam o programa de testes, então é necessário submeter uma versão da aplicação corrigida e o teste refeito. E para cada teste e cada device é cobrado um preço, veja preços de dois fornecedores. Note que este preço inclui  teste e a asssinatura se der tudo certo.

Outro cenário é saber se todos os telefones o CA ROOT da UTI. Veja os telefones que o suportam na tabela existente no website.

Para os devices que não suportam o UTI é necessário checar com o fabricante, qual o CA ROOT que é disponibilizado em cada aparelho. Para saber isso é necessário checar no website de desenvolvedores de cada fabricante os certificados suportados em cada device. Ou olha em cada aparelho qual é o CA ROOT disponível.

Um exemplo, eu tenho o telefone Nokia 3650, que tem instalado o CA ROOT: Verisign, Thawte, Cybertrust, etc. Então não suporta o UTI, teria de pagar para a Thawte por um certificado de para assinatura de aplicações, que custa US$ 159. Se a mesma aplicação tiver de ser instalada em outro telefone que não suporta Thawte, teria os custos de certificado desse CA ROOT.

Informações complementares, que encontrei no website da motorola (é necessário ter login no website):

I am a Motorola Partner, how do I obtain Partner Access to the MOTODEV website?

Development MIDlet Signing Process

Signing Midlets with a VeriSign or Thawte Certificate

E um blog comentando sobre a assinatura de aplicações Java ME.

Written on April 17, 2007