当前位置: 首页 > 面试题库 >

JKS密钥库格式的规范

郁吉星
2023-03-14
问题内容

我想知道是否存在Java中使用的JKS密钥存储格式的正式规范?我想编写一个往返PKCS#12的转换器,但不是用Java编写的,因此不幸的是,不能选择使用keytool或Java代码。

在一个十六进制编辑器中查看一个告诉我,它可能不是ASN.1。在我开始研究OpenJDK之前,尝试对格式进行逆向工程,是否有人知道是否存在规范?到目前为止我找不到任何东西,将不胜感激!


问题答案:

我认为您应该从JDK
来源开始研究。那里有一些非常有用的评论。例如

/*
         * KEYSTORE FORMAT:
         *
         * Magic number (big-endian integer),
         * Version of this file format (big-endian integer),
         *
         * Count (big-endian integer),
         * followed by "count" instances of either:
         *
         *     {
         *      tag=1 (big-endian integer),
         *      alias (UTF string)
         *      timestamp
         *      encrypted private-key info according to PKCS #8
         *          (integer length followed by encoding)
         *      cert chain (integer count, then certs; for each cert,
         *          integer length followed by encoding)
         *     }
         *
         * or:
         *
         *     {
         *      tag=2 (big-endian integer)
         *      alias (UTF string)
         *      timestamp
         *      cert (integer length followed by encoding)
         *     }
         *
         * ended by a keyed SHA1 hash (bytes only) of
         *     { password + whitener + preceding body }
         */


 类似资料:
  • 我试图转换JKS密钥存储到BKS密钥存储使用转换密钥存储实用程序(https://code.google.com/p/zip-signer/downloads/detail?name=convert-keystore-1.2.zip 在执行命令时 我得到以下错误: 密钥存储是通过Java密钥存储实用程序创建的: keytool-genkey-alias myAlias-keyalg RSA-key

  • 应用程序A调用webservice应用程序B 相互认证。 我们有申请证书。由名为C的CA签名的证书。这是jks文件中唯一的单一证书内容 我们使用了相同的jks文件作为应用程序密钥库和信任库。它运转良好。 我的理解是,当应用程序A调用appB时,appB发送其证书,该证书也由名为C的CA签名。appA接受该证书,因为在appA TrsStore中,我们有另一个证书,该证书由名为C的CA签名。 然后,

  • 问题内容: 我正在使用SSLServerSocket和java.ssl包中的其他类在Java中测试SSL。运行以下代码时,出现异常java.io.IOException:无效的密钥库格式。我的代码: 文件key.txt:1268312345812304612348712634283427346我想我应该在key.txt文件中放一些东西,但是我不知道要放什么。可能是经过消毒的物体。 编辑:客户端代码

  • Bouncy Castle FIP是否支持将“PKCS12”作为密钥库/信任库?我在某个地方读到,在approved模式下,它不支持PKCS#12格式,但在non approved模式下(通常使用的库)支持它。

  • 执行密钥库时,以下代码每次都会失败,IOException为“无效密钥库格式”。load()方法。该文件已成功从.jar文件加载。在Windows 10 Pro上使用Java 1.8。Maven用于编译和组装jar文件,然后将war放在一起,并作为war文件部署到JBOSS服务器。我也尝试过使用getDefault()的.getInstance,但出现了相同的错误。 使用以下命令从自签名服务器证书

  • 在终端中运行命令时出错: "keytools-list-v-alias androiddegkey-keystore%USERPROFILE%. android\debug.keystore" 导致以下错误: P.S:关于这个错误,我看到过类似的问题,但没有一个解决方案解决了我的问题。