3 回答

TA贡献1848条经验 获得超6个赞
使用私有密钥和公共证书,您需要首先创建一个PKCS12密钥库,然后将其转换为JKS。
# Create PKCS12 keystore from private key and public certificate.
openssl pkcs12 -export -name myservercert -in selfsigned.crt -inkey server.key -out keystore.p12
# Convert PKCS12 keystore into a JKS keystore
keytool -importkeystore -destkeystore mykeystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias myservercert
要验证JKS的内容,可以使用以下命令:
keytool -list -v -keystore mykeystore.jks
如果这不是一个自签名证书,则可能要遵循此步骤,导入证书链,该证书链通向受信任的CA证书。

TA贡献1815条经验 获得超10个赞
密钥库需要密钥库文件。该KeyStore级需要FileInputStream。但是,如果您提供null(而不是FileInputStream实例),则会加载一个空的密钥库。创建密钥库后,您可以使用验证其完整性keytool。
以下代码使用空密码创建一个空密钥库
KeyStore ks2 = KeyStore.getInstance("jks");
ks2.load(null,"".toCharArray());
FileOutputStream out = new FileOutputStream("C:\\mykeytore.keystore");
ks2.store(out, "".toCharArray());
拥有密钥库后,导入证书非常容易。在此链接中查看示例代码。

TA贡献1998条经验 获得超6个赞
您对的观察InpputStream.available()
是正确的,但是我看到的文档FilterInputStream.available()
说返回了可以从此输入流读取(或跳过)的字节数的估计值,并且没有警告!在示例(在Blog中)中,DataInputStream.available()
在任何地方都使用&FilterInputStream
扩展DataInputStream
。available()
在这种特殊情况下使用不安全吗?
添加回答
举报