我想配置 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
也许您可以以某种方式以编程方式设置此值,请查看源代码。