OVH Cloud OVH Cloud

SSL V3 avec JDK 1.4.1

2 réponses
Avatar
Frederic WOEHL
Salut à tous,

J'utilise un SSLServerSocket crée à par d'un SSLServerSocketFactory lui
meme crée à partir d'un SSLContext lui meme initialisé avec un
KeyManagerFactory qui a été initialisé avec un KeyStore lui meme ayant
chargé un certificat dans un fichier jks crée avec keytool.exe....ouf!!
si vous avez réussi a lire jusque là bravo...

Mon problème est d'utiliser un certificat X509 directement (un fichier
xxx.cer) plutot d'un jks crée avec keytool.

Des idées ?
Merci d'avance,
FRED

2 réponses

Avatar
Jc Sirot
Frederic WOEHL wrote:

Mon problème est d'utiliser un certificat X509 directement (un fichier
xxx.cer) plutot d'un jks crée avec keytool.



Tu peux créer un Objet KeyStore "from scratch" puis importer un
certificat et sa clé lus sur le disque par exemple (certificat et sa clé
privée RSA encodée en PKCS8) :

Certificate cert = null;
try {
CertificateFactory cf CertificateFactory .getInstance("X.509");
cert = cf.generateCertificate(
new FileInputStream("mycert.cer"));
} catch (CertificateException ce) {
ce.printStackTrace;
}

Key key = null;
try {
FileInputStream in = new FileInputStream("mykey.pk8")
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while(in.available() != 0) {
bos.write(in.read());
}
byte[] buf = bos.toByteArray();
KeyFactory kf = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec keyspec
= new PKCS8EncodedKeySpec(buf);
key = kf.generatePrivate(keyspec);
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (InvalidKeySpecException ike) {
ike.printStackTrace();
} catch (NoSuchAlgorithmException nae) {
nae.printStackTrace();
}

Certificate[] certs = {cert};
KeyStore ks = KeyStore.getInstance("JKS");
ks.setKeyEntry("alias_de_la_cle", key, "password".toCharArray(), certs);

--

Cordialement
-- JC Sirot

Avatar
Frederic WOEHL
Merci bien,

Il me reste un problème de lecture de la clé privé mais ca devrait être
bon...(surement un pb d'algo)

FRED

Jc Sirot wrote:

Frederic WOEHL wrote:

Mon problème est d'utiliser un certificat X509 directement (un fichier
xxx.cer) plutot d'un jks crée avec keytool.



Tu peux créer un Objet KeyStore "from scratch" puis importer un
certificat et sa clé lus sur le disque par exemple (certificat et sa clé
privée RSA encodée en PKCS8) :

Certificate cert = null;
try {
CertificateFactory cf > CertificateFactory .getInstance("X.509");
cert = cf.generateCertificate(
new FileInputStream("mycert.cer"));
} catch (CertificateException ce) {
ce.printStackTrace;
}

Key key = null;
try {
FileInputStream in = new FileInputStream("mykey.pk8")
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while(in.available() != 0) {
bos.write(in.read());
}
byte[] buf = bos.toByteArray();
KeyFactory kf = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec keyspec
= new PKCS8EncodedKeySpec(buf);
key = kf.generatePrivate(keyspec);
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (InvalidKeySpecException ike) {
ike.printStackTrace();
} catch (NoSuchAlgorithmException nae) {
nae.printStackTrace();
}

Certificate[] certs = {cert};
KeyStore ks = KeyStore.getInstance("JKS");
ks.setKeyEntry("alias_de_la_cle", key, "password".toCharArray(), certs);

--

Cordialement
-- JC Sirot