Um applet sem assinatura e auto assinados exibem Publisher
Unknow (editor desconhecido) e passaram a ter sua execução bloqueada a partir
da versão 7.51 do JRE.
Para que essa mensagem não seja exibida, é necessário
assinar os JARs com um certificado válido emitido pela Certisign.
Porém, após seguir os passos para assinar os JARs, estes
continuaram a exibir a mensagem de Publisher Unknow. Além disso, ao serem
assinados ou verificados, exibirem um alerta de que a assinatura era válida
apenas por 6 meses, enquanto o certificado, recém emitido, era válido por 12
meses.
A documentação da Certsign se mostrou insuficiente e um
chamado de suporte nos levou a gerar um arquivo CSR (certificate signing
request) inválido, entre outras coisas.
Então vão aí as dicas para tudo dar certo da 1ª vez.
1.
Primeira dica importante: sempre utilize o
comando KEYTOOL e JARSIGNER do JDK 6. Os comandos do JDK 7 produzem
arquivos corrompidos, isto está documentado em vários blogs.
2.
Para gerar as chaves públicas e privadas:
keytool -genkey -alias -keyalg
RSA -keysize 2048 -keystore.jks
Serão feitas as seguintes
perguntas:
Defina a senha de segurança do
keystore (será utilizada para futuras alterações neste arquivo)
What is your first and last name? (Este
é o Common Name): Ex: Minha Empresa LTDA
What is the name of your organizational unit?
(Preenchimento livre - Ex. setor): Tecnologia
What is the name of your organization? (Razão
Social completa como consta no CNPJ): Minha Empresa LTDA
What is the name of your City or Locality? (Cidade,
por extenso): Ex. Rio de Janeiro
What is the name of your State or Province? (Estado,
por extenso): Ex. Rio de Janeiro
What is the two-letter country code for this
unit? - (Sigla do País, com duas letras): BR
Confirmar
Defina a Senha do certificado
(será utilizada para assinar os JARs)
Segunda dica importante: geração
de certificados de servidor, no campo CN deve ser informado o host+domínio.
Para certificados Code Signing o correto é a Razão Social da empresa,
exatamente igual ao que aparece no cartão CNPJ.
3.
Para gerar o CSR (Certificate Signing Request:
keytool -certreq -alias
-keyalg RSA -file .csr -keystore
.jks
4.
Guarde estes arquivos, suas senhas e o seu alias
em um local seguro. Se perder o JKS ou esquecer a senha do keystore ou do
certificado seu certificado não poderá ser usado. Se esquecer o alias use o
keytool –list –v –keystore .jks
5.
Envie o CSR para a CertSign
6.
A CertSign vai verificar seu CNPJ na Junta
Comercial e vai entrar em contato com você num telefone fixo que deverá estar
no nome da empresa. Se você não possuir telefone fixo registrado no nome da
empresa e este telefone não estiver cadastrado numa lista pública, a CertSign
vai te dar outras alternativas.
7.
Quando tudo estiver certo, você vai receber por
email três certifiados
Chave pública do seu certificado:
deve ser gravada num arquivo texto com nome .cer
CA intermediário: deve ser
gravada num arquivo texto com nome .cer
Seu certificado no formato pkcs7:
deve ser gravada num arquivo texto com nome .p7b
Terceira dica importante: você deverá utilizar um
arquivo keystore contendo sua chave privada mais toda a árvore de certificados,
os certificados deverão ser armazenados na ordem correta (raiz, CA
intermediário, seu certificado). Se isto não estiver desta forma, a assinatura
irá falhar. Para proceder desta forma, siga os passos:
8.
Tire uma cópia do seu arquivo keystore (.jks) e
renomeie para algo como _tree.jks
9.
Dê um duplo clique no arquivo .ptb (no Windows,
vai abrir com o gerenciador de certificados)
10.
Expanda a árvore até chegar numa pasta chamadas
Certificados, que vai conter 3 certificados em árvore
11.
Clique com o botão da direita no certificado
onde está escrito Public Primary Certification Authority – G5, todas as
tarefas, export... Grave o certificado no formato DER e extensão .cer na mesma
pasta onde gravou os certificados do passo 7. Utilize um nome como primary.cer
12.
Repita o procedimento para o certificado onde
está escrito Code Signing 2010 CA, grave com um nome como secondary.cer
13.
Importe estes dois certificados, primeiro o
primary e depois o code siginign, no arquivo _tree.jks:
keytool -import -trustcacerts -alias root -file
primary.cer -keystore _tree.jks
keytool -import -trustcacerts -alias secondary
-file secondary.cer -keystore _tree.jks
14.
Importe o seu certificado no arquivo
_tree.jks:
keytool -import -trustcacerts
-alias -file .cer -keystore
_tree.jks
15.
Assine todos os JARs utilizados no seu applet:
jarsigner" -keystore
_tree.jks -storepass -keypass