Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-03-2008, 08: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, 09: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, 14: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, 16: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 17:03.
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2008, 21: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, 09: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 09:58.
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2008, 11: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, 11: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, 13: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, 11: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 11:16.
altropinto è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2008, 12: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, 16: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, 13: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


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Le auto connesse possono vendere i tuoi ...
E se i computer elaborassero le informaz...
NVIDIA non ci sta: "Non lasceremo che l'...
Gli Stati Uniti hanno armi in orbita: ar...
Robot aspirapolvere in offerta su Amazon...
ChatGPT inventa testimoni falsi e un avv...
Find X10 Pro Max di OPPO arriverà...
L'IA scriverà codice migliore del suo st...
Valve apre le prenotazioni di Steam Fram...
ECOVACS T50 OMNI Gen3 a 379€: il riferim...
Netflix e Sega insieme: arrivano i film ...
Veeam ottiene la certificazione da parte...
XIAOMI Redmi Buds 8 a 37,94€: auricolari...
Il fotovoltaico scende sott'acqua: nuove...
Microsoft chiede supervisione umana nell...
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: 12:50.


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