配置 p2 存储库管理器以编程方式连接到具有客户端证书的 HTTPS 存储库



我想配置 p2 存储库管理器以连接到 HTTPS 存储库(Apache + 客户端证书(。

有几种方法可用于加载存储库:

public IMetadataRepository loadRepository(URI location, IProgressMonitor monitor) throws ProvisionException, OperationCanceledException;
public IMetadataRepository loadRepository(URI location, int flags, IProgressMonitor monitor) throws ProvisionException, OperationCanceledException;
public IArtifactRepository loadRepository(URI location, IProgressMonitor monitor) throws ProvisionException;
public IArtifactRepository loadRepository(URI location, int flags, IProgressMonitor monitor) throws ProvisionException;

使用location参数,我可以向HTTPS服务器提供URI。如何提供包含客户机和 CA 证书的密钥库/信任库的路径?我不喜欢在 Java 进程中使用全局密钥库。

找到了一个解决方案。 p2 使用 ECF 作为通信层。

要激活 SSL 支持,请执行以下操作:

  • 安装和启动捆绑包:org.eclipse.ecf.provider.filetransfer.httpclient.ssl和/或org.eclipse.ecf.provider.filetransfer.ssl
  • 使用密钥库创建 SSLSocketFactory 对象并注册为 OSGi 服务

    SSLContext sslContext = SSLContext.getInstance("SSL"(;

    sslContext.init(keymanagers, trustmanagers, null(;

    SSLSocketFactory factory = sslContext.getSocketFactory((;

    bundleContext.registerService(SSLSocketFactory.class.getName((, 工厂,空(;

请参阅"安全存储运行时选项"帮助章节:http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Freference%2Fref-securestorage-options.htm

。也 http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html

-eclipse.keyring <file path> (Equinox)
    Set to override location of the default secure storage

也许您可以以某种方式以编程方式设置此值,请查看源代码。

最新更新