Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-03-2008, 09:59   #1
altropinto
Member
 
Iscritto dal: Feb 2006
Messaggi: 88
[java] convertire certificato .pem in .der

Salve a tutti,
devo implementare una classe JAVA che effettua la conversione di un certificato (in formato .pem) in formato. der.

Quali librerie devo utilizzare?????
C'è un modo per farlo?


grazie
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2008, 10:18   #2
altropinto
Member
 
Iscritto dal: Feb 2006
Messaggi: 88
nessuna idea??????
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2008, 15:57   #3
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
i contenuti dei due formati sono identici, devi solo rimuovere la riga dell'intestazione (BEGIN CERTIFICATE), quella finale (END CERTIFICATE) e convertire il resto da Base64 a binario.

quando ho tempo guardo l'altra domanda.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2008, 17:56   #4
altropinto
Member
 
Iscritto dal: Feb 2006
Messaggi: 88
hai qualche esempio????
Quale classe devo utilizzare??
perchè ho provato ma non ci sono riuscito......

ti ringrazio ancora

Ultima modifica di altropinto : 17-03-2008 alle 18:03.
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2008, 22:18   #5
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Codice:
BufferedReader input =  new BufferedReader(new FileReader("test.pem"));
try
{
    String line = null;
    StringBuffer buf = new StringBuffer();
    while (( line = input.readLine()) != null)
         if (! line.startsWith("-"))
            buf.append(line);
    input.close();
    byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(buf.toString());
    //dec contiene il DER
}
catch(...)
ad occhio dovrebbe andare, sistemalo tu
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2008, 10:40   #6
altropinto
Member
 
Iscritto dal: Feb 2006
Messaggi: 88
prima di tutto ti ringrazio per la tua disponibilità.
Ho fatto come hai detto tu:

String certfile = "D:\\usercert.pem";

BufferedReader input = new BufferedReader(new FileReader(certfile));
try
{
String line = null;
StringBuffer buf = new StringBuffer();
while ((line = input.readLine()) != null)
{
if (!line.startsWith("-"))
{
buf.append(line);
}
}
input.close();
byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(buf.toString());
//dec contiene il DER

//Scrivo il certificato .der in un file

ByteArrayInputStream ba = new ByteArrayInputStream(dec);
FileOutputStream fos = new FileOutputStream(new File("D:\\usercert.der"));
int n = 0;
while ((n = ba.read()) >= 0)
{
fos.write(dec, 0, n);
}
fos.close();
ba.close();

}
catch (Exception e)
{
e.printStackTrace();
}


però c'è un problema: quando utilizzo questo certificato per creare un keystore mi solleva la seguente eccezione:
______________________________________________________________
java.security.cert.CertificateException: java.io.IOException: DerInputStream.getLength(): lengthTag=40, too big.
at sun.security.provider.X509Factory.engineGenerateCertificates(X509Factory.java:419)
_______________________________________________________________

Sembra come se la conversione non è stata eseguita correttamente.
Infatti se converto il certificato .pem con il comando openssl, non si verifica lo stesso errore:

openssl x509 -in usercert.pem -inform PEM -out usercert.der -outform DER

Inoltre il certificato convertito con il comando openssl è grande: 1.119 byte mentre quello convertito con la classe java è grande:157.938 byte.

Mi sapresti dire il motivo??????
Secondo te sbaglio nella scrittura su file????
Ti ringrazio ancora

Ultima modifica di altropinto : 18-03-2008 alle 10:58.
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2008, 12:02   #7
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
penso che sbagli la scrittura su file, anche se non riesco a testare il tuo codice, prova con:

FileOutputStream fos = new FileOutputStream("file.der");
fos.write(dec);
fos.close();


fammi sapere.
quando posso guardo anche l'altro topic
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2008, 12:35   #8
altropinto
Member
 
Iscritto dal: Feb 2006
Messaggi: 88
Adesso il certificato è grande: 1.306 byte.
Però si verifica lo stesso problema:

java.security.cert.CertificateException: java.io.IOException: DerInputStream.getLength(): lengthTag=40, too big.
at sun.security.provider.X509Factory.engineGenerateCertificates(X509Factory.java:419)

Quindi penso che non dipende dalla scrittura ma dalla decodifica effettuata.
Forse Openssl utilizza una codifica differente.

Secondo te dov'è il problema?

ti ringrazio ancora
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2008, 14:22   #9
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
ho creato un programmino di test e mi funziona, openssl è in grado di leggere il DER creato.
puoi postare il PEM del tuo certificato?
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2008, 12:04   #10
altropinto
Member
 
Iscritto dal: Feb 2006
Messaggi: 88
per ragioni di sicurezza non te lo posso inviare in quanto il certificato non è mio.

quello che posso fare è inviarti la classe dove si verifica il problema.

Dimenticavo....mi sono accorto che la conversione da pem a der funziona con alcuni certificati ma non con quello che devo utilizzare io.
Da cosa può dipendere????Codifiche differenti?????

Allora nel file (in allegato) prova2.txt è contenuta la classe di conversione da pem a der.

Nel file ImportKey.txt invece è contenuta la classe che crea un keystore a partire dal certificato e dalla chiave privata. In questa classe si verifica l'eccezione.


Ti ringrazio ancora
Allegati
File Type: txt prova2.txt (1.2 KB, 3 visite)
File Type: txt ImportKey.txt (6.6 KB, 3 visite)

Ultima modifica di altropinto : 19-03-2008 alle 12:16.
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2008, 13:47   #11
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
beh un certificato è pubblico per cui non ci vedevo un gran problema

in ogni caso con un mio PEM di test, anche la tua classe prova2 funziona correttamente
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2008, 17:28   #12
altropinto
Member
 
Iscritto dal: Feb 2006
Messaggi: 88
Nel file ImportKey.txt che ti ho allegato è presente la classe che crea il keystore a partire dal certificato e dalla chiave privata. Il pezzetto di codice che ti ho riportato contiene i metodi per ricavare e caricare il certificato in formato .der nel keystore.

La mia domanda è: c'è un modo (senza effettuare la conversione da .pem a .der) per fare la stessa cosa con un certificato .pem????

// loading CertificateChain

CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream certstream = fullStream(certfile);

Collection c = cf.generateCertificates(certstream);

Certificate[] certs = new Certificate[c.toArray().length];

if (c.size() == 1)
{
certstream = fullStream(certfile);
System.out.println("One certificate, no chain.");
Certificate cert = cf.generateCertificate(certstream);
certs[0] = cert;
}
else
{
System.out.println("Certificate chain length: " + c.size());
certs = (Certificate[]) c.toArray();
}


Inoltre vorrei chiederti se hai dato un'occhiata al secondo post.

Ti ringrazio
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2008, 14:29   #13
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
che io sappia no.
il tuo codice mi sembra giusto, se riesci a produrre un certificato che presenta il problema e non hai vincoli a girarmi fammelo sapere.
io su un paio di test che ho fatto non ho trovato problemi.

ciao
kingv è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Switch 2: la crisi dei chip potrebbe ess...
Samsung si prepara a raddoppiare i prezz...
Il Play Store inizia ad avvisare gli ute...
AliExpress punta sulle aziende italiane:...
Oura acquisice una nuova startup: potreb...
Gli occhiali smart con IA sono il nuovo ...
Il nuovo Apple M5 Max si comporta bene n...
Shark annuncia il lancio di CryoGlow: la...
TCL perde in tribunale: quei TV 'QLED' n...
NVIDIA: la scarsità di hardware c...
Nintendo fa causa al governo USA per i d...
iPhone 17 256GB a 899€, MacBook Air 16/2...
C'è l'IA dietro la tua canzone pr...
Rocket Lab ha posticipato il lancio del ...
Dalla missione Artemis IV il razzo spazi...
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: 07:02.


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