那么,如果我有一个公共证书坐在一个密钥商店,是否会删除它使用密钥工具也删除私钥信息?
生成CSR,然后使用外部CA对证书进行签名,然后导入证书。
我认为它可以是任何您制作的别名,并且删除它的别名指定的证书会删除证书本身和相应的私钥?
可以在不影响关键信息的情况下更改别名吗?另外,同一证书是否可以以不同的别名导入,并且仍然工作(即与私钥匹配)?
我问您的原因是,当导入证书时,我希望看到它被列出为privatekeyentry类型,而不是当前显示为的可信项,但不确定原因。
证书是以前添加的根和内部证书,并显示为ok。
更新:
谢谢你的答复。因此,为了澄清我的理解,并确保我的理解是正确的,为私钥条目重命名别名是有效的,因为证书和密钥在这个别名下保持在一起。删除私钥输入类型的别名也是如此,它将同时删除证书和密钥。
因此,回到我最初的一个问题,证书是否可以以不同的别名再次导入,并仍然与存储中的私钥匹配?根据信息id“拒绝”,它需要使用先前为私钥设置的别名。
我认为混淆和复杂之处在于私钥从未离开密钥存储库,它是在创建CSR时生成的,因此从未与证书同时导入。
我的问题是,导入的证书显示为一个受托人证书条目,所以我猜它与商店中的私钥不匹配。
在执行CSR生成时,是否指定了私钥的别名?如果是这样的话,是否有可能使用不同的别名导入签名的证书会导致两者不匹配?我唯一能想到的另一件事就是使用了错误的CSR。
发布于 2016-10-05 18:00:57
作为不同keystore条目类型的源代码,一切都很清楚。Keystore支持三种类型:
让我们详细介绍一下:
类型KeyStore.PrivateKeyEntry有三个字段:
private final PrivateKey privKey;
private final Certificate[] chain;
private final Set<Attribute> attributes;不同的是,KeyStore.TrustedCertificateEntry类型只有两种:
private final Certificate cert;
private final Set<Attribute> attributes;如果枚举这些条目,则证书+密钥只有一个条目。因此,它似乎存储在一个PrivateKeyEntry中。由于合并证书和密钥,并将其链接到一个别名重命名别名,别名将同时影响密钥和证书。
由于keystore中的每个条目完全独立于其他条目,所以只要每个条目都有自己的唯一别名,就可以导入相同的密钥和证书数十倍。
顺便说一句:我记得keystore甚至允许具有相同别名的多个条目(不知道所有keystore格式是否正确)。在这种情况下,您只能访问第一个条目的别名。另一个只有在枚举所有条目时才可访问。
发布于 2016-10-06 13:10:18
我认为它可以是任何您制作的别名,并且删除它的别名指定的证书会删除证书本身和相应的私钥?
是的,PrivateKeyEntry总是同时包含私钥和匹配证书。也可以选择颁发证书。
可以在不影响关键信息的情况下更改别名吗?
实际上,KeyStore API不包含重命名操作。但是,可以使用新别名克隆条目并删除旧条目。这就是keytool的"-changelias“命令的实现方式。
另外,同一证书是否可以以不同的别名导入,并且仍然工作(即与私钥匹配)?
不是的。如果您导入一个不属于PrivateKeyEntry的别名的证书,则会创建一个TrustedCertificate条目。
因此,回到我最初的一个问题,证书是否可以以不同的别名再次导入,并仍然与存储中的私钥匹配?根据信息id“拒绝”,它需要使用先前为私钥设置的别名。
一点儿没错。
我认为混淆和复杂之处在于私钥从未离开密钥存储库,它是在创建CSR时生成的,因此从未与证书同时导入。
不,私钥是用"-genkeypair“命令(连同一个自签名的证书)生成的,CSR由"-certreq”命令生成。这两个命令都需要一个别名参数。
在执行CSR生成时,是否指定了私钥的别名?
是的,见键工具参考。
如果是这样的话,是否有可能使用不同的别名导入签名的证书会导致两者不匹配?
一点儿没错。
https://stackoverflow.com/questions/39880281
复制相似问题