java - 使用 Eclipse 连接到网络

标签 java eclipse-plugin

我想将我的 Eclipse 插件连接到 HTTPS URL,但遇到了问题,因为用户需要接受证书。当然有几个tutorials for how to do this in plain Java ,但这可能很难在 Eclipse 插件中完成,我想我会重新发明轮子。

因为 Eclipse 有一些内置工具可以连接到具有不同网络协议(protocol)的站点。一个示例是“安装新软件...”操作。该工具甚至有一个 preference page单独列出 HTTPS。

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

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

最佳答案

基于 this answer here我构建了自己的插件,它只在其 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();
        }
    }
}

关于java - 使用 Eclipse 连接到网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39344041/

相关文章:

eclipse - Eclipse IDE的PMD插件离线安装

java - 修改方法中的数组列表并按值传递

java - 保存关闭/打开介绍部分之间的状态

java - 在android中将float转换为CharSequence?

java - 延迟从 admob 加载横幅广告

eclipse - SpringIDE 和 Eclipse Galileo 3.5

eclipse-plugin - 哪个eclipse插件实现了Ctrl+PageDown或M1+PageDown

java - Eclipse 插件项目中的库

java - SonarQube 扫描仪在对一个 java 文件进行 AST 扫描期间卡住

java - 如何在 cucumber 中使用可选参数