Cra*_*lus 3 java security digital-certificate digital-signature x509certificate
我很困惑在java中创建由CA签名的有效证书的过程.
我知道java有工具keytool
来创建公钥和证书.
它还支持JKS和PKCS#12.
因此,可以创建具有公钥 - 私钥对和证书
keytool -genkey -keyalg RSA -alias aCert -keystore someKeystore.keystore
的密钥库,例如,这将创建具有证书的密钥库(自签名).
到目前为止我明白了.
我可以导出证书以获取csr请求以发送给CA,例如Verisign,当然没有私钥.
在这部分之后我迷失了.
CA会签名,我将不得不重新导入我的密钥库?这将取代密钥库中已有的原始证书?
它仍将是自签名的.
发行人不应该是CA本身吗?但那么这怎么可能呢?我只发送公钥而不是证书?
有关清理流程的任何帮助吗?
更新:
CA签署证书(例如Verisign)也是发行人吗?或者它可以签署证书issuer==subject
吗?
谢谢
你是正确的CSR创建点.你会用这样的东西:
$ keytool -certreq -alias myalias -file myalias.csr -keystore keystore
生成CSR,其中包含:
并使用您的私钥签名.然后,CA生成一个新证书:
您需要导入到密钥库中,替换原始的自签名证书:
$ keytool -import -alias myalias -keystore keystore -file myalias.crt
CA通常会使用中间证书对您的新证书进行签名,而中间证书又由受信任的根签名; 在这种情况下,您应该在您自己的证书之前导入中间证书:
$ keytool -import -trustcacerts -alias intermediate -file intermediate.crt -keystore keystore
编辑:来自keytool文档的这个模糊部分非常清楚(它谈论了一个'链'证书,这只是指将你的链接到根的中间证书):
keytool可以创建和管理密钥库"密钥"条目,每个条目包含一个私钥和一个关联的证书"链".链中的第一个证书包含与私钥对应的公钥.
首次生成密钥时(请参阅-genkey子命令),链开始时包含单个元素,即自签名证书.自签名证书是发行者(签名者)与主题相同的证书(证书对其公钥进行身份验证的实体).每当调用-genkey子命令生成新的公钥/私钥对时,它还会将公钥包装到自签名证书中.
稍后,在生成证书签名请求(CSR)(请参阅-certreq子命令)并发送到证书颁发机构(CA)后,将导入CA的响应(请参阅-import),并且自签名证书为取而代之的是一系列证书.链的底部是CA颁发的证书(回复),用于验证主题的公钥.链中的下一个证书是验证CA的公钥的证书.
归档时间: |
|
查看次数: |
1792 次 |
最近记录: |