java - 配置 p2 存储库管理器以通过编程方式使用客户端证书连接到 HTTPS 存储库

标签 java eclipse osgi p2

我想配置 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 证书的 keystore /信任库的路径?我不喜欢在 Java 进程中使用全局 key 存储。

最佳答案

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

激活 SSL 支持:

  • 安装并启动 bundle :org.eclipse.ecf.provider.filetransfer.httpclient.ssl和/或org.eclipse.ecf.provider.filetransfer.ssl
  • 使用 keystore 创建 SSLSocketFactory 对象并注册为 OSGi 服务

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

    sslContext.init(keymanagers, trustmanagers, null);

    SSLSocketFactory factory = sslContext.getSocketFactory();

    bundleContext.registerService(SSLSocketFactory.class.getName(), factory, null);

关于java - 配置 p2 存储库管理器以通过编程方式使用客户端证书连接到 HTTPS 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10653145/

相关文章:

c++ - 是否可以根据构建配置更改 Eclipse CDT 中的代码?

java - 自定义约束 validator 注解

java - payara micro 5.182 不部署用 java10 编译的 Web 应用程序

java - Java 中的双向链表如何向后遍历?

c++ - 如何在 C++ 可执行文件中为 main() 方法使用 main.cpp 以外的文件名

java - 将@Inject 与带有 Eclipse4 依赖注入(inject)的 OSGi 服务一起使用

java - Proguard 不会查看嵌入式 jar 来进行引用查找

java - 在自定义 JPanel 中使用 Graphics2D 出现 NullPointerException

JavaFX:在TableView的同一单元格中添加文本和进度条

eclipse - 即使 Hamcrest 是依赖项,Mockito bundle 也找不到 org.hamcrest 包