【问题标题】:Difference between key pair and self signed certificate using keytool?使用keytool的密钥对和自签名证书之间的区别?
【发布时间】:2018-11-08 17:21:13
【问题描述】:

阅读一些 URL,很常见的是声明以下命令用于创建公钥/私钥对。

 keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -storepass password

然后它继续并指示以下命令用于创建自签名证书。

 keytool -genkey -alias selfsigned -keyalg RSA -keystore keystore.jks -storepass password -validity 360

据我所知,唯一的区别是添加“-validity 360”。

问题 1 - 简单地添加“-validity 360”是否会从生成密钥对更改为自签名证书?

问题 2 - “密钥对”和“自签名证书”本质上是同义词吗?

问题 3 - 密钥对或“自签名证书”是否可以用于官方 CSR?

【问题讨论】:

    标签: java keytool self-signed key-pair


    【解决方案1】:

    问题 1 - 简单地添加“-validity 360”是否会从生成密钥对更改为自签名证书?

    没有。 -genkeypair(大约 2005 年以来的官方名称)或不太准确的同义词 -genkey 总是生成一个密钥对一个自签名证书,并将私钥和证书(一起)存储在密钥库中。 -validity 360 的唯一区别在于有效期是使用指定值还是默认值。

    问题 2 - “密钥对”和“自签名证书”本质上是同义词吗?

    没有。在这种情况下,它们是联系在一起的,但它们是不同的东西。密钥对,以及单独的私钥和公钥,可以在没有任何证书(自签名或其他)的情况下使用存储其他而不是 Java 密钥库,并且可以使用自签名证书(包括公钥)用于一些没有私钥的事情。例如,SSH 通常使用“裸”密钥对进行服务器身份验证,并经常使用客户端身份验证。 PGP 使用作为一种证书的签名公钥格式,但与 Java 密钥库、SSL/TLS/HTTPS/等和代码签名(和 SMIME)中使用的 X.509/PKIX 证书非常不同。

    作为 travel.SX 中经常出现的类比,请考虑一张机票和一箱衣服。传统上,当您购买机票时,它包括能够随身携带一定数量的行李,通常是几个不超过重量限制的手提箱,在您的航班上随身携带 - 尽管现在这以广泛不受欢迎和有争议的方式变化。如果您愿意,可以不带手提箱乘坐飞机,尽管这意味着在您的目的地您可能没有任何衣服可穿。在飞机以外的许多地方,例如汽车、出租车、公共汽车、火车或亲戚或朋友的家中,使用手提箱携带衣服也是可能且相当普遍的。

    问题 3 - 密钥对或“自签名证书”是否可以用于官方 CSR?

    如果您从其他来源提供主题名称,则可以使用密钥 pair 生成 CSR(*)。但是 Java 密钥库实际上并不存储密钥 pair 加上自签名证书,而是存储 私钥 加上自签名证书(或其他证书);公钥可访问仅存储在证书中,并且需要公钥(来自证书)并用于生成 CSR。

    自签名证书或任何其他证书本身不能用于生成 CSR(*),因为 CSR 必须使用私钥进行签名。

    (*) 其实CSR是一个通用的概念,CSR的种类很多,规则也各不相同。我在这里只讨论PKCS10 aka RFC2986 et rel 指定的那种CSR,它是Java 和大多数其他常用工具生成的(唯一的)一种,也是几乎所有互联网CA 都需要的一种。

    【讨论】:

      【解决方案2】:

      您说的很对,自签名证书和 CSR 请求都以 keytool -genkey 命令开头。不同之处在于你接下来要做什么。

      对于自签名证书,无需多做。您可以导出它,在客户端安装为受信任的证书,keytool -export

      keytool -export -alias selfsigned -file selfsigned.cer -keystore keystore.jks -storepass password 
      

      对于 CSR 请求,您可以使用 keytool -certreq 创建它:

      keytool -certreq -alias mydomain -file mydomain.csr -keystore keystore.jks -storepass password
      

      有效期由您决定。这对任何一种路由都不是很重要,但使用自签名证书通常需要超过默认的 90 天。

      【讨论】:

        猜你喜欢
        • 2011-04-30
        • 2011-11-27
        • 1970-01-01
        • 1970-01-01
        • 2013-11-10
        • 1970-01-01
        • 2010-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多