Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-06-2006, 16:15   #1
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
[JAVA] Prelevare da Keystore PKCS#12 Chiave privata e file di certificato

ciao ragazzi come da titolo cerco un programma java che dato un PKCS#12 mi crea 2 nuovi file uno contenente solo la chiave privata che mi servirà dopo per firmare un messaggio e il corrispettivo certificato con la chiave pubblica in formato der.

Grazie mille
Ciao Ciao
__________________
Toshiba M40-281

Ultima modifica di ermasto : 06-06-2006 alle 18:30.
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 18:30   #2
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
nessuno mi puo aiutare
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 20:09   #3
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
KeyStore ks = KeyStore.getInstance("PKCS12");
InputStream in = new FileInputStream("x509pri.p12");
ks.load(in,null);
PrivateKey priv = (PrivateKey) ks.getKey("","");
java.security.cert.Certificate cert = ks.getCertificate("");
byte[] encodedCert = cert.getEncoded();

FileOutputStream certfos = new FileOutputStream("suecert.der");
certfos.write(encodedCert);
certfos.close();

allora ho trovato questo programmino che fa al caso mio ma ho due piccoli problemini
nel metodo ks.getkey() vuole essere passato l'alias e la password, ma il problema è che non so qual'è l'alias del mio certificato e lo stesso vale per il metodo getCertificate. c'è un modo per rimediare a ciò??

Grazie mille
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 20:56   #4
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Codice:
Enumeration aliases = ks.aliases();
while(aliases.hasMoreElements())
   System.out.println(aliases.nextElement());
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 21:07   #5
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
ho provato con il tuo codice kingv ma mi torna un errore: il codice modificato è:

Quote:
package Perform;

import java.util.*;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.*;
import java.security.cert.CertificateException;

public class key {

public static void main(String args[]){



try {

KeyStore ks = KeyStore.getInstance("PKCS12");
InputStream in = new FileInputStream("e://x509pri.p12");
ks.load(in,null);
Enumeration aliases = ks.aliases();
while(aliases.hasMoreElements())
System.out.println(aliases.nextElement());
PrivateKey priv = (PrivateKey) ks.getKey("aliases","aliaseskeypass".toCharArray());
byte[] encodedKey = priv.getEncoded();

/* save the certificate in a file named "suecert" */
FileOutputStream keyfos = new FileOutputStream("suekey.der");
keyfos.write(encodedKey);
keyfos.close();
//You can extract the public key certificate from the keystore and save its encoded bytes to a file named suecert, via the following.

java.security.cert.Certificate cert = ks.getCertificate("aliases");
byte[] encodedCert = cert.getEncoded();

/* save the certificate in a file named "suecert" */
FileOutputStream certfos = new FileOutputStream("suecert.der");
certfos.write(encodedCert);
certfos.close();



} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
questo è l'errore:

Exception in thread "main" java.lang.NullPointerException
at Perform.key.main(key.java:28)

a proposito questo metodo:

Quote:
PrivateKey priv = (PrivateKey) ks.getKey("aliases","aliaseskeypass".toCharArray());
byte[] encodedKey = priv.getEncoded();

/* save the certificate in a file named "suecert" */
FileOutputStream keyfos = new FileOutputStream("suekey.der");
keyfos.write(encodedKey);
keyfos.close();

va bene per salvare in formato Pkcs#8 la chiave privata che poi posso usare per firmare i messaggi?

Grazie mille
__________________
Toshiba M40-281

Ultima modifica di ermasto : 06-06-2006 alle 21:09.
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 08:36   #6
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Codice:
package Perform;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import java.security.*;
import java.security.cert.CertificateException;

import java.util.*;


public class key
{
	public static void main(String[] args)
	{
		try
		{
			KeyStore ks = KeyStore.getInstance("PKCS12");
			InputStream in = new FileInputStream("e://x509pri.p12");
			ks.load(in, null);

			Enumeration aliases = ks.aliases();
			String alias = (String)aliases.nextElement();

			PrivateKey priv = (PrivateKey) ks.getKey(alias, "aliaseskeypass".toCharArray());
			byte[] encodedKey = priv.getEncoded();

			/* save the certificate in a file named "suecert" */
			FileOutputStream keyfos = new FileOutputStream("suekey.der");
			keyfos.write(encodedKey);
			keyfos.close();

			//You can extract the public key certificate from the keystore and save its encoded bytes to a file named suecert, via the following.
			java.security.cert.Certificate cert = ks.getCertificate(alias);
			byte[] encodedCert = cert.getEncoded();

			/* save the certificate in a file named "suecert" */
			FileOutputStream certfos = new FileOutputStream("suecert.der");
			certfos.write(encodedCert);
			certfos.close();
		}
		catch (KeyStoreException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (FileNotFoundException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (NoSuchAlgorithmException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (CertificateException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (UnrecoverableKeyException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
prova così.
di solito i p12 sono protetti da password (che può essere differente da quella della chiave). sei sicuro di quel "null" nella load?
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 08:42   #7
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da ermasto
va bene per salvare in formato Pkcs#8 la chiave privata che poi posso usare per firmare i messaggi?
dimenticavo.
sì dovrebbe essere ok. se non sei sicuro controlla col metodo getFormat() di PrivateKey
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 09:00   #8
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
io lo scarico dalla mia CA e se provo a installarlo nel browser mi chiede solo la password per la chiave privata

cmq ho provato il tuo codice e mi da quest errore

java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded
at com.sun.net.ssl.internal.ssl.PKCS12KeyStore.engineGetKey(Unknown Source)
at java.security.KeyStore.getKey(Unknown Source)
at Perform.key.main(key.java:30)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_ab.b(DashoA12275)
at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede.engineDoFinal(DashoA12275)
at javax.crypto.Cipher.doFinal(DashoA12275)
... 3 more

poi anche se tolgo la parte che si riferisce alla chiave privata e voglio solo estrarre il certificato mi da quest errore.

Exception in thread "main" java.lang.NullPointerException
at Perform.key.main(key.java:40)
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 09:09   #9
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
puo' essere che le password siano coincidenti, per questo ti viene chiesta una volta sola.

prova a mettere qui:
ks.load(in, null);

la stessa password con cui proteggi la chiave privata al posto di null.


fammi sapere.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 09:22   #10
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
Quote:
Originariamente inviato da kingv
puo' essere che le password siano coincidenti, per questo ti viene chiesta una volta sola.

prova a mettere qui:
ks.load(in, null);

la stessa password con cui proteggi la chiave privata al posto di null.


fammi sapere.
ma mi sorge un dubbio ma la password come la metto?? nel senso io ho una pass numerica di 10 caratteri ma nel programmino non la inserisco mai direttamente sempre usando "aliaseskeypass".toCharArray().

Poi ho provato a mettere in ks.load(in,"aliaseskeypass".toCharArray()) e mi caccia quest'altra eccezione

java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.net.ssl.internal.ssl.PKCS12KeyStore.engineLoad(Unknown Source)
at java.security.KeyStore.load(Unknown Source)
at Perform.key.main(key.java:24)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_ab.b(DashoA12275)
at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_40.engineDoFinal(DashoA12275)
at javax.crypto.Cipher.doFinal(DashoA12275)
... 3 more

cosa puo essere??

Grazie mille x l'aiuto
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 09:47   #11
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
"aliaseskeypass" è la password.....
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 15:21   #12
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
niente da fare mi sa sempre lo stesso errore:

java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded
at com.sun.net.ssl.internal.ssl.PKCS12KeyStore.engineGetKey(Unknown Source)
at java.security.KeyStore.getKey(Unknown Source)
at Perform.key.main(key.java:32)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_ab.b(DashoA12275)
at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede.engineDoFinal(DashoA12275)
at javax.crypto.Cipher.doFinal(DashoA12275)1

non riesco proprio a capire da cosa è provocato
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 15:57   #13
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
allora il programma ora funziona in parte ecco il codice:

[quote]


[/package Perform;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import java.security.*;
import java.security.cert.CertificateException;

import java.util.*;


public class key
{
public static void main(String[] args)
{
try
{
KeyStore ks = KeyStore.getInstance("PKCS12");
InputStream in = new FileInputStream("e://x509pri.p12");
ks.load(in, null);

Enumeration aliases = ks.aliases();
String alias=null;
while(aliases.hasMoreElements())
{
alias = (String)aliases.nextElement();
System.out.println(alias);
}
PrivateKey priv = (PrivateKey) ks.getKey(alias, "1234567890".toCharArray());
byte[] encodedKey = priv.getEncoded();
System.out.println(priv);
/* save the certificate in a file named "suecert" */
FileOutputStream keyfos = new FileOutputStream("suekey.der");
keyfos.write(encodedKey);
keyfos.close();


//You can extract the public key certificate from the keystore and save its encoded bytes to a file named suecert, via the following.
java.security.cert.Certificate cert = ks.getCertificate(alias);
byte[] encodedCert = cert.getEncoded();
System.out.println(" Certificate : " + cert);
/* save the certificate in a file named "suecert" */
FileOutputStream certfos = new FileOutputStream("suecert.der");
certfos.write(encodedCert);
certfos.close();
}
catch (KeyStoreException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (NoSuchAlgorithmException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (CertificateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}

}
}
[quote]

infatti mi stampa la chiave e me la salva pure anche se devo vedere in che estensione salvarla, perche penso che .der non va bene sai in che formato si salvano i pkcs#8??

solo che dopo avermi fatto stampare la chiave privata mi da quest'ecezione sul metodo:
byte[] encodedCert = cert.getEncoded();

eccola qua:
Exception in thread "main" java.lang.NullPointerException
at Perform.key.main(key.java:43)

e non capisco come mai
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 17:46   #14
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
io ti rispondo ma non mi leggi...


sostituisci:
ks.load(in, null);
con:
ks.load(in, "1234567890");
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 18:01   #15
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
Quote:
Originariamente inviato da kingv
io ti rispondo ma non mi leggi...


sostituisci:
ks.load(in, null);
con:
ks.load(in, "1234567890");
hai ragione solo che quando avevo provato mi dava lo stesso gli errori e non ci avevo piu fatto caso

Scusami tanto e grazie mille per il tuo prezioso aiuto
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 19:27   #16
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da ermasto
hai ragione solo che quando avevo provato mi dava lo stesso gli errori e non ci avevo piu fatto caso

no problem stavo scherzando ovviamente

CIao
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2006, 23:52   #17
Mazza2
Senior Member
 
Iscritto dal: Jan 2002
Città: Spagna
Messaggi: 556
è proprio il topic che cercavo:

ho creato una coppia di chiavi (pubblica,privata), le vorrei salvare in maniera sicura sul pc. Qual è la combinazione migliore( + sicura ) per il salvataggio??...Le chiavi le creo cosi':
Codice:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC"); // 
      keyGen.initialize(512);
      KeyPair chiaviRSA = keyGen.generateKeyPair();
      PrivateKey chiavePrivata = chiaviRSA.getPrivate();
      PublicKey chiavePublica = chiaviRSA.getPublic();
Mazza2 è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2006, 09:54   #18
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
ora un altro passo che devo fare è il seguente:

devo creare un messaggio soap e aggiungere ad esso un security token che è il certificato x509 e poi tutto questo messaggio soap lo devo firmare con la chiave privata che appartiene al certificato

Per quanto riguarda la creazione del messaggio soap non ci sono problemi ma non sono riuscito a trovare nulla su come aggiungere il token x509, ho letto in giro che devo usare wss4j ma non ho trovato una buona guida e cercare in tutte le API è uno sbattimento assurdo, che tu sappia esiste una guida o qualche sito che lo spiega meglio magari con qualche esempio??
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2006, 12:20   #19
Mazza2
Senior Member
 
Iscritto dal: Jan 2002
Città: Spagna
Messaggi: 556
che differenza c'e' tra pcks 8 e 12??? se salvo la privata con pkcs 8,.,.non capisco come la salva con pcks 8,.., un aiuto pls
Mazza2 è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2006, 19:38   #20
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
ermasto> non ho mai usato wss4j anche se l'argomento mi interessa parecchio. non posso aiutarti ma se trovi dei link interessanti postali

mazza> pkcs8 è un formato per le chiavi private (neanche molto usato per quello che ho visto), pkcs12 invece è lo standard per contenere chiavi e certificati in un file (protetto da crittografia a chiave simmetrica).
kingv è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Popucom si presenta come uno dei miglior...
Super Mario Galaxy il film: l'idraulico ...
Stellantis, contro risposta a BYD: "...
Microsoft evita una sanzione in Europa p...
TCL a IFA 2025: TV Mini LED, smartphone ...
Neanche la politica è salva: l'Al...
I nuovi Pixel 10 in mostra a Milano con ...
Perplexity di nuovo in tribunale: Merria...
AirPods 4 al minimo su Amazon: la versio...
Sam Altman sempre più convinto: l...
iPhone 17: su Amazon partono i preordini...
WhatsApp Android Beta: in arrivo i threa...
Intergalactic: The Heretic Prophet sar&a...
Gmail introduce la sezione Acquisti per ...
Con Data Transfer Essentials Google Clou...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v