4 votes

Utiliser Eclipse pour se connecter au réseau

Je veux connecter mon plug-in Eclipse à une URL HTTPS, mais j'ai un problème car l'utilisateur doit accepter le certificat. Bien sûr, il existe quelques tutoriels sur la façon de faire cela en Java simple mais cela pourrait être difficile à réaliser dans un plug-in Eclipse et je pense que je réinventerais la roue de cette façon.

Parce qu'Eclipse dispose d'outils intégrés pour se connecter à des sites ayant des protocoles de réseau différents. Un exemple serait l'action "Installer un nouveau logiciel...". L'outil dispose même d'une fonction page de préférences qui liste HTTPS séparément.

Selon le Aide sur Eclipse Le KeyStore est utilisé "comme un référentiel pour les certificats utilisés pour les décisions de confiance [...] lors des connexions SSL". Pourtant, je n'ai pas réussi à comprendre comment l'utiliser.

Ma question est donc la suivante : comment puis-je utiliser les fonctions intégrées d'Eclipse pour me connecter à mon site HTTPS ?

0voto

Steffi S. Points 1410

Sur la base de cette réponse ici J'ai construit mon propre plug-in qui ne charge que le seul certificat dont j'ai besoin (j'ai de la chance) dans son fichier EarlyStartup :

public class EarlyStartup implements IStartup {

    private static final String ALIAS = "ACME"; 

    @Override
    public void earlyStartup() {
        final char[] passphrase = "changeit".toCharArray();
        final char separator = File.separatorChar;
        final File dir = new File(System.getProperty("java.home") + separator + "lib" + separator + "security");
        final File file = new File(dir, "cacerts");

        try (InputStream certIn = getClass().getResourceAsStream("acme.org.crt");
                final InputStream localCertIn = new FileInputStream(file);) {

            final KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
            keystore.load(localCertIn, passphrase);
            if (keystore.containsAlias(ALIAS)) {
                return;
            }

            final CertificateFactory cf = CertificateFactory.getInstance("X.509");
            final Certificate cert = cf.generateCertificate(certIn);
            keystore.setCertificateEntry(ALIAS, cert);

            try (OutputStream out = new FileOutputStream(file)) {
                keystore.store(out, passphrase);
            }
        } catch (final Exception e) {
            e.printStackTrace();
        }
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X