Java 为jsse生成私钥和公钥时出现混乱?

Java 为jsse生成私钥和公钥时出现混乱?,java,ssl,ssl-certificate,jsse,truststore,Java,Ssl,Ssl Certificate,Jsse,Truststore,我找到了介绍生成关键点步骤的教程。 它说明了以下步骤: keytool -genkey -alias clientprivate -keystore client.private -storetype JKS -keyalg rsa \ -dname "CN=Your Name, OU=Your Organizational Unit, O=Your Organization, L=Your City, \ S=Your State, C=Your Country" -store

我找到了介绍生成关键点步骤的教程。 它说明了以下步骤:

keytool -genkey -alias clientprivate -keystore client.private -storetype JKS -keyalg rsa \
    -dname "CN=Your Name, OU=Your Organizational Unit, O=Your Organization, L=Your City, \
    S=Your State, C=Your Country" -storepass clientpw -keypass clientpw

keytool -genkey -alias serverprivate -keystore server.private -storetype JKS -keyalg rsa \
   -dname "CN=Your Name, OU=Your Organizational Unit, O=Your Organization, L=Your City, \
   S=Your State, C=Your Country" -storepass serverpw -keypass serverpw

keytool -export -alias clientprivate -keystore client.private \
    -file temp.key -storepass clientpw

keytool -import -noprompt -alias clientpublic -keystore client.public \
    -file temp.key -storepass public

keytool -export -alias serverprivate -keystore server.private \
    -file temp.key -storepass serverpw
keytool -import -noprompt -alias serverpublic -keystore server.public \
   -file temp.key -storepass public
但是我很困惑.jks文件在哪里?为什么我们要用临时钥匙? 如果你能回答我的问题,我将不胜感激

.jks文件在哪里

前两个操作在$HOME/.keystore上运行

为什么我们要用临时钥匙


作为中间文件从服务器环境传送到客户端环境进行导入,反之亦然。携带.keystore文件本身会破坏私钥,因此不安全。导出步骤不会导出私钥。

最终,
.keystore
.jks
只是文件扩展名:由您合理命名文件。一些应用程序使用存储在
$HOME/.keystore
中的密钥库文件:通常暗示它是JKS文件,因为。并不是每个人都对jks文件使用
.jks
扩展名,因为它是默认的。我建议使用扩展,只是为了记住要指定的类型(如果需要)

在Java中,keystore一词可以具有以下含义之一,具体取决于上下文:

  • API:
  • 可用于支持此API的文件(或其他机制)
  • 与信任存储相对的密钥存储,如下所述:
当谈到文件和存储时,这并不是一个真正的键/值对存储设施(有很多或其他格式用于此)。相反,它是一个存储加密密钥和证书的容器(我相信其中一些还可以存储密码)。通常,这些文件都经过加密和密码保护,以防未经授权的方使用这些数据

Java使用其类和相关API来使用密钥库()
JKS
是一种特定于Java的文件格式,但该API也可以用于其他文件类型,通常是PKCS#12。要加载密钥库,必须指定其密钥库类型。传统的扩展将是:

  • .jks
    对于类型
    “jks”
  • .p12
    .pfx
    类型
    “PKCS12”
    (规范名称为PKCS#12,但Java密钥库类型名称中未使用
此外,BouncyCastle还提供了它的实现,特别是(通常使用
.bks
扩展),它经常用于Android应用程序

你对此感到困惑

密钥库是证书、私钥等的容器

有关于这个密钥库的格式的规范,主要是

JKS是Java的密钥库实现。还有BKS等

这些都是keystore类型

所以要回答你的问题:

.keystore文件和.jks文件之间的区别

没有。jk是密钥库文件。 但是密钥库类型之间存在差异。例如,
JKS
vs
#PKCS12

这可能会帮助您从一开始就解决问题。


这个问题似乎离题了,因为它与编程无关。也许是一个更好的提问方式。@jww这是关于键工具的,它是JDK的一部分。这里有数百个类似的问题。@EJP-其中一些可能也是离题的。社区有时在维持自身治安和执行自身政策方面做得很差。