我想配置 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/