Usar Certificado Digital no Java

Dúvida,

Acabei de gerar um certificado digital com a ferramente keytool do Java. Inclusive exportei pro formato X509.

Agora, eu gostaria de, a partir do meu código Java, encriptar alguns dados, baseado na chave gerada no meu certificado.

Alguém já fez isso ou sabe como?

ps: Google não me ajudou ainda! :roll:

Achei o seguinte código:

KeyStore ks = KeyStore.getInstance ( "JKS" ) ; // for security, KeyStore wants certificate password as char[] char[] password = "my-password".toCharArray (); ks.load( new FileInputStream( "my-certificate.jks" ), password ) ; Certficate c = ks.getCertificate( "my-certificate-name" ); PublicKey p = c.getPublicKey();

Em: http://mindprod.com/jgloss/certificate.html

Perfeito… ele roda na boa.

Mas só não sei como pegar a chave privada, pois é com ela que devo encriptar os dados.

para falar a verdade, para encriptar, você precisa apenas da chave publica, a chave privada é utilizada apenas para desencriptar.

Achei que eu usaria a chave privada para encriptar… Ainda acho isso.
E eles usariam a chave pública para verificar os dados que eu enviei.

Não é isso? Até agora foi isso que eu lí por aí.

êpa, êpa, êpa, deixa eu vender meu peixe :smiley:

Afinal, o JRoller me paga por hit!

[]s

Epa, existem 2 tipos básicos de operações com PKI:

-assinatura: vc gera 1 hash usando sua chave privada e todos verificam com sua chave publica.

-mensageria: vc gera 1 mensagem criptografada usando a chave pública do destinatario e ele abre a mensagem usando a chave privada.

A regra é: chave privada somente um lado usa, chave pública todos os demais usam.

Ahm…compelmenteando: a chave publica encripta, a privada desencripta.

[]s

[quote=“pcalcado”]Ahm…compelmenteando: a chave publica encripta, a privada desencripta.

[]s[/quote]

Não é exatamente isso philip.

Ambas chaves criptografam e descriptografam. Elas são simétricas! Ou seja, quando voce gera 1 par de chaves voce pode distribuir qualquer um das duas como pública.

Ops, tem razão, besteira detected.
Sorry.

[]s

[quote=“louds”]Epa, existem 2 tipos básicos de operações com PKI:

-assinatura: vc gera 1 hash usando sua chave privada e todos verificam com sua chave publica.[/quote]

É o isso o que vai acontecer. Vou criar uma assinatura (meu ID + um codigo) e enviar para o fornecedor do WebService. Ele vai usar minha chave pública pra ler isso.

Como no código que eu postei lá em cima, eu só consigo pegar minha chave pública… Gostaria de saber como pegar a chave privada.

Não achei nada ainda!

daniel, coloca as linahs que você digitou para gerar o certificado. Naquele artigo que te passei diz onde sua PK “fica” :wink:

[]s

keytool -genkey -alias meu_cliente -keystore ./meu_cliente.jks -validity 10000 -dname “CN=XXX, OU=TI, O=XXX, L=Sao Paulo, ST=SP, C=BR” -keyalg RSA -sigalg MD5withRSA

e depois

keytool -export -alias meu_cliente -file meu_cliente_cert.x509 -storekey ./meu_cliente.jks

Vê se esse link te dá alguma luz:
http://javaalmanac.com/egs/java.security/GetKeyFromKs.html

Voce tem que importar no seu keystore o certificado privado.

[quote=“om”]Vê se esse link te dá alguma luz:
http://javaalmanac.com/egs/java.security/GetKeyFromKs.html[/quote]

Valeu mesmo! Salvou minha vida. :smiley:

Merece um beijo!
Louds, beije-o!

[quote=“danieldestro”]Merece um beijo!
Louds, beije-o![/quote]
Opa, dispenso.

O agradecimento q vc deu já tá bom.

:lol:

[quote=louds][quote=“pcalcado”]Ahm…compelmenteando: a chave publica encripta, a privada desencripta.

[]s[/quote]

Não é exatamente isso philip.

Ambas chaves criptografam e descriptografam. Elas são simétricas! Ou seja, quando voce gera 1 par de chaves voce pode distribuir qualquer um das duas como pública.[/quote]

Não seriam assimétricas? Na criptografia simétrica, a chave pública é usada tanto para cifrar como para decifrar.

[quote=aerokads][quote=louds][quote=“pcalcado”]Ahm…compelmenteando: a chave publica encripta, a privada desencripta.

[]s[/quote]

Não é exatamente isso philip.

Ambas chaves criptografam e descriptografam. Elas são simétricas! Ou seja, quando voce gera 1 par de chaves voce pode distribuir qualquer um das duas como pública.[/quote]

Não seriam assimétricas? Na criptografia simétrica, a chave pública é usada tanto para cifrar como para decifrar.[/quote]

Mais um tópico “desenterrado”… :slight_smile:

Sim, algoritmos de chaves pública e privada são chamados de algoritmos assimétricos. Acho que o louds não foi feliz com a frase. Mas o conceito está certo tanto a chave publica como a privada podem criptografar e descriptografar a mensagem. Tem uma mensagem do louds na thread que explica bem isto.

E também está correta a sua afirmação: algoritmos de criptografia simétricos são as que possuem apenas uma chave que criptgrafa e descriptografa. Acho apenas que não se usa o termo “chave pública” no caso de algoritmos simétricos.

HUHUuu e o tópico renaaaaasce novamente hueheuhe

seguinte, com relação as chaves assimetricas voce tmb pode usar as duas…

o remetente criptografa com a privada propria (garante q saiu dele) e com a publica do destinatario (garante q soh o destinatario vai abrir)

o destinatario descriptografa com sua privada (pois eh pra ele e soh ele abre) e com a publica do remetente (q garante q veio de quem ele acha q veio)

Ressuscitando o tópico mais uma vez :smiley: .

Estou com uma dúvida pessoal. Eu recebo um arquivo compactado e dentro desse arquivo tenho um arquivo com extensão .p7s, como que eu faço para a partir desse arquivo fazer a validação autenticação???

Alguém já fez isso? O que preciso fazer?

estou perdido.

abraços.