quinta-feira, abril 28, 2016

Ao Colegas de empresa

Há quase 02 dois anos que trabalho em uma das mais respeitas e renomadas empresas de desenvolvimento software house do mercado meridional brasileiro. Nela encontrei diversas situações adversas e felizes mas em qualquer situação que houvesse sempre pude contar com o corpo de amigos, não só colegas, que fiz lá. Para sempre eles ficarão em minha lembrança "Like A Stone".
Abraço a todos os colegas e colaboradores da CWI Software.

quarta-feira, fevereiro 26, 2014

Após assinar applet, continua aparecendo mensagem de PUBLISHER UNKNOWN e expiração em 6 meses

Este post consiste em detalhar meios de contornar o problema da atualização do java update 51 que demanda que todo e qualquer applet seja assinado digitalmente por uma entidade competente.

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

quinta-feira, janeiro 19, 2012

How To Write Bytes To File


OutputStream out = new FileOutputStream(file);
InputStream in = new ByteArrayInputStream(bytes);

byte[] outputByte = new byte[4096];

try
{
while (in.read(outputByte, 0, 4096) != -1) {
out.write(outputByte, 0, 4096);
}

in.close();
out.flush();
out.close();

}
catch (Exception e)
{
throw e;
}
finally
{
if (in != null) {
in.close();
}
if (out != null) {
out.flush();
out.close();
}
}

How To Get Amout Of Time Of A Method Execution

Como "pegar" o tempo total de execução de um método.


Calendar time = Calendar.getInstance();
// your code...
System.out.println("Time in milliseconds: " + time.getTimeInMillis());

Postagens "How To..."

Eu gostaria de iniciar essa série de postagens uma vez que não poucas vezes me deparo com a seguinte pergunta quando estou com alguma dificuldade: "Como eu faço para..." (How To).

Peço a liberdade para traduzir não ao literal, então vou tentar fazer postagens mais objetivas com o título de "How To..."

Acredito que esse tipo de postagem em blogs é mais objetiva e ajuda sobremaneira nas consultas a internet (googleadas).

Abraços e espero que aproveitem!

Daniel

domingo, agosto 28, 2011

PrimeFaces DataTable + DAO + Spring


This post is intended to explain how to develop a simple DAO using Spring and JSF PrimeFaces DataTable

Basically this post will cover the steps to build a simple application that uses DataTable component, Spring 3 as DAO.

First you have to download all jars needed to accomplish this task. We'll use PrimeFaces 3 and Spring Framework 3. All versions used are:

Spring Framework 3.0.5 - http://www.springsource.org/node/2880

NOTE: PrimeFaces 3 during the time I'm publishing this post is in its developtment stage. But I guess this won't be a huge problem. So feel free to use it as you wish. But be carefull if you usie dev distribution in a production application.

I won't waiste much time teaching how to configure your IDE. So it would be great if you already have done that so I can focus in what are the steps to create an application using these frameworks. Also, this post won't show you all features available for these framework as well. I assume that you already have knoledge in how to create a Eclipse project, import and configure all dependencies need. I

Please, import these jar into your Eclipse project:

Spring:


PrimeFaces:

Please, go primefaces' page to learn how to configure a project using PrimeFaces framework.

primefaces-3.0.M3-SNAPSHOT.jar


segunda-feira, junho 20, 2011

Problemas de encoding ao receber parametros de URL

Você já deve ter se deparado com problemas de encoding ao receber requisições de cujo conteúdo há caracteres latinos tais como "ç".

Bom, um ajuste eficiente disso é fazer o seguinte:

request.setCharacterEncoding("UTF-8");

String paramValue = URLDecoder.decode(request.getParameter("param"), "UTF-8");

Bom, segue aí a dica!

Abraços!

terça-feira, maio 31, 2011

Inverter String numa única linha

Se você quiser inverter uma String usando uma única linha.

System.out.println(new StringBuffer("http://www.youtube.com/watch?v=6dGEadbbxyw").reverse());

Abraços!

quinta-feira, maio 19, 2011

Instalando o Tortoise SVN Client

Neste post, eu mostro como instalar o Tortoise SVN Client. O ambiente no qual estou me baseando é o Ruindows 7, mas serve para qualquer sistema operacional baseado em Ruindows.

Primeiro, baixe o Tortoise SVN Client . Escolha a versão mais adequada para o seu sistema operacional: 32bits ou 64bits.

Pra instalar é fácil: next, next, next, Finish.

Reinicie no final para as configurações terem efeito.

Crie na raiz do C:\ um diretório chamado svn:

c:\svn

Acesso o diretório recém criado e clique com o botão direito do mouse sobre ele e, em seguida, no menu de atalho, clique em "SVN Checkout...".


Na janela de dialogo, informe o URL do repositório e clique em ok.

Informe o usuario e senha e baixo o conteúdo do repositório.