Applet assinada + https

Galera,

Estou com o seguinte problema: Obfusquei uma applet e após isso realizei a assinatura desta com um certificado que criei. Depois disso disponibilizei em um site http, funcionou. Mas queria disponibilizá-la em um site https, e não consegui.

Alguém saberia me informar o pq não deu certo?

Obrigado

Diga qual foi o stack trace que apareceu no Java Console.

O mais provável é que a máquina virtual Java não tenha conseguido estabelecer a comunicação via SSL (https) porque o certificado digital usado para a máquina que está servindo o site não foi emitido por alguma das autoridades certificadoras que estão presentes no arquivo CACERTS.

Isso ocorre, por exemplo, quando vocë usa um certificado de teste.

Outra coisa que pode ter ocorrido é que você está tentando referenciar a máquina que serve SSL via IP, não pelo nome que está escrito no certificado ( CN= ).

O stack trace foi o seguinte:

[i]Plug-in Java 10.5.1.255
Usando versão JRE 1.7.0_05-b05 Java HotSpot™ Client VM
Diretório home do usuário = C:\Documents and Settings\leonardo.RECIVIL

c: limpar janela da console
f: concluir objetos da fila de finalização
g: coleta de lixo
h: exibir esta mensagem de ajuda
l: descartar lista de carregadores de classes
m: imprimir uso de memória
o: log do trigger
q: ocultar console
r: recarregar configuração da política
s: descartar propriedades do sistema e de implantação
t: descartar lista de threads
v: descartar pilha de threads
x: limpar cache do carregador de classes
0-5: definir nível de rastreamento como

security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.
security: property package.definition new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws
security: property package.definition value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws
security: property package.definition new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy
security: property package.definition value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy
security: property package.definition new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
security: property package.definition value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
basic: Listener de progresso adicionado: sun.plugin.util.ProgressMonitorAdapter@e26ffd
basic: Plugin2ClassLoader.addURL parent called for https://localhost/workspace/assinador1506/assinadorsigned.jar
security: Acessando chaves e certificado no perfil de usuário do Mozilla: null
security: O JSS não está configurado
security: A verificação da revogação da lista negra está ativada
security: A verificação da lista de bibliotecas confiáveis está ativada
network: Entrada de cache encontrada [url: https://localhost/workspace/assinador1506/assinadorsigned.jar, versão: null] prevalidated=true/0
cache: Resource https://localhost/workspace/assinador1506/assinadorsigned.jar has expired.
network: Conectando https://localhost/workspace/assinador1506/assinadorsigned.jar ao proxy=DIRECT
network: Conectando http://localhost:443/ ao proxy=DIRECT
security: Carregando certificados da CA Raiz de C:\Arquivos de programas\Java\jre7\lib\security\cacerts
security: Certificados da CA Raiz carregados de C:\Arquivos de programas\Java\jre7\lib\security\cacerts
security: Carregando certificados SSL da CA Raiz de C:\Arquivos de programas\Java\jre7\lib\security\cacerts
security: Certificados SSL da CA Raiz carregados de C:\Arquivos de programas\Java\jre7\lib\security\cacerts
security: Carregando certificados SSL de Implantação de C:\Documents and Settings\leonardo.RECIVIL\Dados de aplicativos\Sun\Java\Deployment\security\trusted.jssecerts
security: Certificados SSL de Implantação carregados de C:\Documents and Settings\leonardo.RECIVIL\Dados de aplicativos\Sun\Java\Deployment\security\trusted.jssecerts
security: Carregando certificados do armazenamento de certificados da sessão de Implantação
security: Certificados carregados do armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado está no armazenamento de certificados negados de Implantação
security: Verificando se o certificado está no armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado SSL está no armazenamento de certificados permanentes de Implantação
network: Conectando https://localhost/workspace/assinador1506/assinadorsigned.jar ao proxy=DIRECT
network: Conectando http://localhost:443/ ao proxy=DIRECT
security: Carregando certificados do armazenamento de certificados da sessão de Implantação
security: Certificados carregados do armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado está no armazenamento de certificados negados de Implantação
security: Verificando se o certificado está no armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado SSL está no armazenamento de certificados permanentes de Implantação
cache: Reading Signers from 654 https://localhost/workspace/assinador1506/assinadorsigned.jar | C:\Documents and Settings\leonardo.RECIVIL\Configurações locais\Dados de aplicativos\Sun\Java\Deployment\cache\6.0\34\46c005e2-642ba2d0.idx
cache: Done readSigners(https://localhost/workspace/assinador1506/assinadorsigned.jar)
cache: Read manifest for https://localhost/workspace/assinador1506/assinadorsigned.jar: read=476 full=476
cache: Resource https://localhost/workspace/assinador1506/assinadorsigned.jar has expired.
network: Conectando https://localhost/workspace/assinador1506/assinadorsigned.jar ao proxy=DIRECT
network: Conectando http://localhost:443/ ao proxy=DIRECT
security: Carregando certificados do armazenamento de certificados da sessão de Implantação
security: Certificados carregados do armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado está no armazenamento de certificados negados de Implantação
security: Verificando se o certificado está no armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado SSL está no armazenamento de certificados permanentes de Implantação
network: Conectando https://localhost/workspace/assinador1506/assinadorsigned.jar ao proxy=DIRECT
network: Conectando http://localhost:443/ ao proxy=DIRECT
security: Carregando certificados do armazenamento de certificados da sessão de Implantação
security: Certificados carregados do armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado está no armazenamento de certificados negados de Implantação
security: Verificando se o certificado está no armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado SSL está no armazenamento de certificados permanentes de Implantação
basic: Plugin2ClassLoader.getPermissions CeilingPolicy allPerms
cache: Resource https://localhost/workspace/assinador1506/assinadorsigned.jar has expired.
network: Conectando https://localhost/workspace/assinador1506/assinadorsigned.jar ao proxy=DIRECT
network: Conectando http://localhost:443/ ao proxy=DIRECT
security: Carregando certificados do armazenamento de certificados da sessão de Implantação
security: Certificados carregados do armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado está no armazenamento de certificados negados de Implantação
security: Verificando se o certificado está no armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado SSL está no armazenamento de certificados permanentes de Implantação
network: Conectando https://localhost/workspace/assinador1506/assinadorsigned.jar ao proxy=DIRECT
network: Conectando http://localhost:443/ ao proxy=DIRECT
security: Carregando certificados do armazenamento de certificados da sessão de Implantação
security: Certificados carregados do armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado está no armazenamento de certificados negados de Implantação
security: Verificando se o certificado está no armazenamento de certificados da sessão de Implantação
security: Verificando se o certificado SSL está no armazenamento de certificados permanentes de Implantação
security: Carregando certificados de Implantação de C:\Documents and Settings\leonardo.RECIVIL\Dados de aplicativos\Sun\Java\Deployment\security\trusted.certs
security: Certificados de Implantação carregados de C:\Documents and Settings\leonardo.RECIVIL\Dados de aplicativos\Sun\Java\Deployment\security\trusted.certs
security: Carregando certificados do armazenamento de certificados da sessão de Implantação
security: Certificados carregados do armazenamento de certificados da sessão de Implantação
security: Validar a cadeia de certificados usando a API CertPath
security: Carregando certificados da CA Raiz de C:\Arquivos de programas\Java\jre7\lib\security\cacerts
security: Certificados da CA Raiz carregados de C:\Arquivos de programas\Java\jre7\lib\security\cacerts
security: Obter conjunto de certificados do armazenamento de certificados da CA Raiz
security: Obter conjunto de certificados do armazenamento de certificados da CA Raiz
security: Obter conjunto de certificados do armazenamento de certificados da CA Raiz
security: Obter conjunto de certificados do armazenamento de certificados da CA Raiz
security: O certificado não expirou. Não é necessário verificar as informações de timestamp
security: Arquivo de lista de jurisdição encontrado
security: Não é necessário verificar a extensão confiável deste certificado
security: O suporte à CRL está desativado
security: O suporte a OCSP está desativado
security: Esta validação de Entidade Final OCSP está desativada
security: Verificando se o certificado está no armazenamento de certificados negados de Implantação
security: Verificando se o certificado está no armazenamento de certificados permanentes de Implantação
basic: Applet carregado.
basic: Applet resized and added to parent container
basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 120215 us, pluginInit dt 766803 us, TotalTime: 887018 us
obtendo diretorio temporario do windows.
diretorio temporario do windows obtido com sucesso: C:\WINDOWS\Temp.
criando arquivo temporario.
arquivo temporario criado com sucesso: C:\WINDOWS\Temp\trial_quali_applet7454095568349168145xml.
network: Conectando ftp://csp:qualicsp12@quali.no-ip.org/trial_quali_applet.xml;type=i ao proxy=DIRECT
basic: Applet initialized
basic: Starting applet
basic: completed perf rollup
basic: Applet made visible
basic: Applet started
basic: Told clients applet is started[/i]

A menos que o CN no certificado seja “localhost” você não conseguirá estabelecer uma conexão SSL. Acerte o arquivo \windows\system32\drivers\etc\hosts de modo a incluir uma entrada para “fingir” que sua máquina tem o mesmo hostname que está configurado no CN do certificado. Procure por “Common Name” se quiser mais detalhes de como saber o nome configurado no seu certificado .

Obrigado pelas respostas até então!! :slight_smile:

Bom, o meu arquivo de host ja esta assim…
127.0.0.1 localhost

Alguma outra solução??

Digamos que você tenha cadastrado o seu certificado para aparecer algo como “bankline.itau.com.br” (como o certificado cujas propriedades estou mostrando). Digamos também que o IP da sua máquina seja 10.2.3.4. Então você instala o tal certificado, a sua aplicação Web deve funcionar com “https://bankline.itau.com.br”, e você acerta as configurações de proxy do navegador de forma que bankline.itau.com.br seja puxado diretamente, sem usar o proxy. e você tem de acertar o arquivo de hosts de modo que apresente uma entrada contendo o ip e o hostname fajuto (apenas para teste).

127.0.0.1 localhost
10.2.3.4 bankline.itau.com.br

Obviamente substitua “10.2.3.4” pelo IP da sua máquina, e “bankline.itau.com.br” pelo CN que está cadastrado no certificado que você configurou no seu web server.