使用Eclipse连接到网络

Steffi S.

我想将Eclipse插件连接到HTTPS URL,但是有一个问题,因为用户将需要接受证书。当然,有一些关于如何在普通Java中执行此操作教程,但是在Eclipse插件中可能很难做到这一点,我想我会重新发明一下。

因为Eclipse具有一些内置工具,可以连接到具有不同网络协议的站点。例如“安装新软件...”操作。该工具甚至具有一个首选项页面,该页面单独列出了HTTPS。

根据Eclipse帮助,KeyStore被用作“建立SSL连接时用于信任决策的证书的存储库”。但是我不知道如何使用它。

所以我的问题是:如何使用Eclipse的内置工具连接到我的HTTPS站点?

Steffi S.

根据此处的答案,我构建了自己的插件,该插件仅在其中加载我需要的一个证书(幸运的是)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();
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章