Osgi 是否可以在没有密码的情况下创建JKS密钥库文件?

Osgi 是否可以在没有密码的情况下创建JKS密钥库文件?,osgi,jks,Osgi,Jks,我正在试验OSGi条件权限机制。更具体地说,我试图使用org.osgi.service.condpermadmin.BundleSignerCondition来限制可以启动哪些捆绑包。我拥有的文档表明,为了使用此权限,我必须使用org.osgi.framework.trust.repositories框架配置属性指定JKS密钥库的路径。但是,相同的文档提到,此属性中提到的JKS不能有密码。所以问题是:如何在没有密码的情况下创建JKS?Keytool实用程序拒绝使用空密码创建JKS。您暂时无法使用

我正在试验OSGi条件权限机制。更具体地说,我试图使用org.osgi.service.condpermadmin.BundleSignerCondition来限制可以启动哪些捆绑包。我拥有的文档表明,为了使用此权限,我必须使用org.osgi.framework.trust.repositories框架配置属性指定JKS密钥库的路径。但是,相同的文档提到,此属性中提到的JKS不能有密码。所以问题是:如何在没有密码的情况下创建JKS?Keytool实用程序拒绝使用空密码创建JKS。

您暂时无法使用Keytool使用空密码创建密钥库,但您仍然可以通过编程方式创建密钥库

阅读如下证书:

私有静态证书readCert(字符串路径)抛出IOException、CertificateException{
try(FileInputStream fin=newfileinputstream(路径)){
返回CertificateFactory.getInstance(“X.509”).generateCertificate(fin);
}
}
然后使用空密码创建密钥库,如下所示:

试试看{
//阅读证书
证书cert=readCert(“/tmp/cert.cert”);
//创建空的JKS密钥库
KeyStore KeyStore=KeyStore.getInstance(KeyStore.getDefaultType());
load(null,null);
//将证书添加到密钥库
keystore.setCertificateEntry(“somecert”,cert);
//使用零长度密码保存密钥库
FileOutputStream fout=新的FileOutputStream(“/tmp/keystore”);
keystore.store(fout,新字符[0]);
}捕获(一般安全性异常| IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
运行以下命令:

keytool -list -keystore keystore
它会要求输入密码,但您只需按enter键即可。您将收到以下警告,但将列出密钥库的内容:

*****************  WARNING WARNING WARNING  *****************
* The integrity of the information stored in your keystore  *
* has NOT been verified!  In order to verify its integrity, *
* you must provide your keystore password.                  *
*****************  WARNING WARNING WARNING  *****************

这可能适合您。

一点警告,Oracle的
keytool
即使不提供密码也可以打印内容,它们的实现是这样的-未提供密码=显示警告,因为他们不希望空密码是有效的;-)