connexion à un site en https
Bonjour à tous
Je travail en ce moment sur un projet utilisant la java security api JSSE
Pour faire court, je souhaite :
- me connecter à un site de façon sécurisée
- me loger
- récupérer des informations auxquelles je n'ai accès que sur mon compte comme des factures ou autres
Lorsque j'utilise la façon par défaut pour me connecter au site j'arrive à récupérer le certificat du site. Voici le bout de code
Code:
1 2 3 4 5 6
|
SSLSocketFactory sfTemp = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sTemp = (SSLSocket) sfTemp.createSocket(host, port);
SSLSession sslSessionTemp = sTemp.getSession();
// Utils.afficheCertif(sslSessionTemp.getPeerCertificates()[0]);
sTemp.close(); |
Je le stock dans mon KeyStore tout va bien.
Lorsque j'utilise ma façon un peu plus personnel j'ai des problèmes de pour récupérer le certificat du site. Voici mon bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
// keystore personnel il n'y a rien dedans
ks = keytoreUtils.initKeystore();
// creation de la paire de cle
KeyPair mykey = utils.createKeyPair();
// Creation du certificat Ã* partir de la paire de clé (certificat autosigné)
X509Certificate cert = utils.generateCertV3ForTimeStamping("kimlaw95",
"DevLab", "kimlaw95Corp", "Montpellier", "Languedoc-R", "FR",
"abc@abc.com", 100, mykey.getPublic(), mykey.getPrivate(),
"SHA1withRSA");
ks.setCertificateEntry("kimlaw95", cert);
ks.setCertificateEntry("sfrCert", Utils.getCertificateFrom(Utils._sfrIp, 443));
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509","SunJSSE");
kmf.init(ks, keytoreUtils.getPasswordKeyStore());
KeyManager[] tabKeyManager = kmf.getKeyManagers();
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SUNX509");
tmf.init(ks);
TrustManager[] tabTrustedManager = tmf.getTrustManagers();
sslContext = SSLContext.getInstance("SSL");
sslContext.init(tabKeyManager, tabTrustedManager,new java.security.SecureRandom());
SSLSocketFactory sslFactory = sslContext.getSocketFactory();
SSLSocket s = (SSLSocket) sslFactory.createSocket(Utils._sfrIp, 443);
SSLSession sslSession = s.getSession();
s.startHandshake(); |
J'ai quelques questions :
- pour la ligne : SSLSocketFactory sfTemp = (SSLSocketFactory) SSLSocketFactory.getDefault();
il y a bien utilisation de KeyStore , de TrustStore etc... ??? Ou sont-ils configurer ?
- Est ce que la récupération du certificat du site signifie que nous somme connecter de façon sécurisé au site ?
- Le fait que mon certificat ne soit pas signé par une autorité de certification reconnue peut poser des problèmes ?
- Quels éléments(propriétés à configurer, certificats à mettre ou? signé par qui ?) faut-il configurer pour se connecter sur un site sécurisé.
J'ai conscience que ce post est long mais ça fait une semaine que je boss dessus et je commence à perdre espoir
j'ai besoin d'un petit coup de pousse :)
Merci