Keytool genkey创建证书或私钥?

时间:2018-02-12 15:03:48

标签: java key keytool

我需要澄清\确认keytool和一般的密钥。

许多网站都表明这是获取带证书的密钥库的方法:

keytool -genkey -keyalg RSA -alias my-certificate -keystore mykeystore.jks -validity 3600 -keysize 2048

如果您导出它,您可以清楚地看到:

-----BEGIN CERTIFICATE-----
MIICVjCCAb8CCAogFQkp...
...rI7KvuXHX2JWNYLdBvC8V6aXAiIb
OaSAB3DoscgOqDh58bw5vEFwjxVo...
-----END CERTIFICATE-----

所以这确实是证书。但是从这里可以只提取公钥。 那么我们可以说证书是密钥吗?

另一方面使用keytool命令:

-genkeypair 

生成密钥对(公钥和私钥)。服务器专用,其他服务器专用。 那么基本上证书\密钥与私钥是否相同? 两种方法都公开,所以基本上证书是私钥吗?

2 个答案:

答案 0 :(得分:0)

简而言之,密钥库包含密钥对,密钥对包含公钥和私钥。所以keytool会创建两者。

您称之为证书的是公钥,因为私钥对您的应用程序服务器是高度机密的,所以不应该不安全地转移,如果可能的话,它根本不会被转移。这意味着您应该在应用程序服务器中创建密钥库,并从该密钥库中提取公钥。在由证书颁发机构签名后,应将其添加到密钥库以创建密钥链。

可以在here

中找到更详细的答案

答案 1 :(得分:0)

keytool创建两个密钥,一个私钥,用于签名,加密,解密,即需要追溯到您的任何内容。为了追溯到您的身份,要验证您的“身份”,您需要向他人提供您的公钥证书。这会使用身份信息包装您的公钥。如果它是一个自签名的公钥证书,那么你说你是,例如,ServerA,但没有人可以真正验证你是ServerA,因为ServerA声称它是ServerA。要解决此问题,请从密钥库中导出证书签名请求(CSR)并将其发送到,例如,验证您的Verisign是ServerA,然后他们签署证书。你最终得到的是一个公钥证书,说你是ServerA,而且这个声明是由Verisign使用他们的私钥签署的,几乎每个实体都有Verisign公钥证书,这样他们就可以验证Verisign的签名,这意味着他们会信任你作为ServerA。然后,您可以分发您的公钥证书,因为Verisign的根签名,每个人都可以加密消息,因为您知道自己确实是ServerA。

相关问题