gpt4 book ai didi

关于证书签名过程的java问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:17:03 24 4
gpt4 key购买 nike

我对在 java 中创建由 CA 签名的有效证书的过程感到困惑。
我知道 java 有工具 keytool 来创建公钥-私钥和证书。
它还支持 JKS 和 PKCS#12。
因此,可以使用公私 key 对和证书创建 keystore ,例如
keytool -genkey -keyalg RSA -alias aCert -keystore someKeystore.keystore这将创建一个带有证书(自签名)的 keystore 。
至此我明白了。
我可以导出 csr 请求的证书以发送给 CA,例如Verisign,当然没有私钥。
在这部分之后我迷路了。
CA 将对其进行签名,我必须将其重新导入到我的 keystore 中?这将替换 keystore 中已有的原始证书?
不过它仍然是自签名的。
颁发者不应该是 CA 本身吗?但这怎么可能?我只发送公钥而不是证书?
请帮忙清理流程?
更新:
签署证书的 CA(例如 Verisign)是否也是颁发者?或者它可以签署 issuer==subject 的证书?
谢谢

最佳答案

就 CSR 创建而言,您是正确的。您将使用这样的东西:

$ keytool -certreq -alias myalias -file myalias.csr -keystore keystore

生成 CSR,其中包含:

  • 您的公钥(从自签名证书中提取)
  • 可分辨名称(即为其请求证书的实体的名称)

并用您的私钥签名。然后 CA 生成一个新证书:

  • 主题 = 您的 DN(来自 CSR 或使用您在申请过程中提供的详细信息自动生成)
  • 颁发者 = CA 的 DN
  • 公钥 = 来自 CSR

您需要将其导入回您的 keystore ,替换原始的自签名证书:

$ keytool -import -alias myalias -keystore keystore -file myalias.crt

通常,CA 会使用中间 证书签署您的新证书,该证书又由受信任的根签署;在这种情况下,您应该在导入自己的证书之前导入中间证书:

$ keytool -import -trustcacerts -alias intermediate -file intermediate.crt -keystore keystore

编辑:keytool 文档中这个晦涩的部分出奇地清楚(它讨论的是证书“链”,这只是指将您的证书链接到根证书的中间证书):

keytool can create and manage keystore "key" entries that each contain a private key and an associated certificate "chain". The first certificate in the chain contains the public key corresponding to the private key.

When keys are first generated (see the -genkey subcommand), the chain starts off containing a single element, a self-signed certificate. A self-signed certificate is one for which the issuer (signer) is the same as the subject (the entity whose public key is being authenticated by the certificate). Whenever the -genkey subcommand is called to generate a new public/private key pair, it also wraps the public key into a self-signed certificate.

Later, after a Certificate Signing Request (CSR) has been generated (see the -certreq subcommand) and sent to a Certification Authority (CA), the response from the CA is imported (see -import), and the self-signed certificate is replaced by a chain of certificates. At the bottom of the chain is the certificate (reply) issued by the CA authenticating the subject's public key. The next certificate in the chain is one that authenticates the CA's public key.

关于关于证书签名过程的java问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com