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

PKCS12密钥库和PKCS11密钥库之间有什么区别?

夏侯昊明
2023-03-14
问题内容

我对Java-
NSS库感兴趣,并且正在阅读《Sun的P11指南》。我对以下内容感到困惑:

使用PKCS12密钥库和PKCS11密钥库有什么区别?

密钥库只是密钥库,对吗?有什么区别吗?它们可以在任何方面互换使用吗?


问题答案:

PKCS#12是一种文件格式(通常称为.p12或.pfx),您可以在其中存储私钥和证书。主要用于转换/传输密钥和证书。如果您从浏览器中导出私钥+证书,则可能采用这种格式。

PKCS#11是一个接口,通常用于与硬件加密令牌(通常是智能卡或USB令牌,它们实际上是嵌入在读取器中的智能卡)进行通信。该界面有许多使用密钥和证书的操作。一些令牌能够使用它们包含的私钥进行签名,而密钥不能离开设备。该接口的重点是将处理密钥和证书的内容视为一个单独的实体,而不必执行PKCS#11提供的加密操作(更具体地说,是与私钥有关的操作)。

当您将PKCS#11与NSS一起使用时,您实际上是在将NSS用作包裹在PKCS#11层后面的黑匣子(它实际上是PKCS#11硬件令牌的软件提供者)。Java通过PKCS#11使用NSS的方式略有不同,因为它不需要PKCS#11共享库(与其他PKCS#11库相比),因此严格来讲,这不是PKCS#11,虽然非常相似

在Java中,您可能能够RSAPrivateKey从PKCS#11存储中获取一个实例,使用它进行签名和解密,而永远无法从其模数中获取任何信息。处理它的安全提供程序将通过该库(如果是硬件令牌支持该库,则通过令牌)进行签名/解密。

回到KeyStoreJava中,它是一个API,可以让您从文件(您可以使用JKS,PKCS#12,PEM等各种文件格式,具体取决于您的安全提供者)或其他基础API加载和使用密钥和证书。
(例如PKCS#11,或多或少与Sun提供程序中的NSS合并,或者如果您在OSX上并且想将KeyChain用作KeyStore,则将其与KeychainStore合并)。



 类似资料:
  • 问题内容: cacerts和密钥库之间有什么区别? 如果我使用在这些链接中找到的定义cacerts和keystore,则它们似乎是证书的集合,但是是在(Java)分布式系统的上下文中。SSL连接期间使用哪一个进行身份验证?两者还是只是其中之一,还是交替? 问题答案: “ cacerts”是一个信任库。信任库用于验证对等方。密钥库用于验证您的身份。

  • 我正试图更改存储在p12密钥库中的证书的密码。我设法通过使用ikeycmd更改了keystore密码,但对于键控器,似乎什么都不起作用。这是我正在尝试的命令: keytool-keypasswd-storetype pkcs12-keystore$keystore_file-alias$key_alias-keypass$key_password-new$new_pass-storepass$st

  • 本文向大家介绍超级密钥和候选密钥之间的区别,包括了超级密钥和候选密钥之间的区别的使用技巧和注意事项,需要的朋友参考一下 超级键和候选键都用于从表中获取记录。这些键还用于创建表之间的关系。超级键和候选键都用于唯一标识表中的记录。两个键都可以具有空值。 以下是超级键和候选键之间的重要区别。 序号 键 超级钥匙 候选键 1 定义 超级键用于标识关系中的所有记录。 候选键是超级键的子集。 2 使用 所有超

  • 问题内容: 我需要了解超级密钥和复合密钥之间的区别。我发现的例子更加令人困惑。您能简单说明一下有什么区别吗?谢谢 问题答案: 超级键唯一地标识一行。它可以由一列或多列组成。复合键是由多个列组成的键。 如果超级键由多列组成,则它也是一个复合键。 如果复合键唯一地标识一行,则它也是超级键。 我看不到“超级密钥”这个名称使用过多:通常只称其为“唯一密钥”。

  • 我用过这个命令 生成密钥库。它工作正常,但从我读到的内容来看,这个命令还应该提示您输入密钥密码(而不是存储密码)?我从来没有收到过这样的提示。我能跑 查看密钥库的内容。钥匙似乎就在那里。。。正确的别名在那里。在哪里获取/设置特定别名的密码? 我有一个key.properties在Android目录 在build.gradle我有: 当我试图生成一个发布版本时,我得到了 我想它可能与keyPassw

  • 我无法使用keytool(java 8)更改PKCS密钥库密码。当我试图更改密钥密码时: 这意味着无法更改PKCS12密钥库的密钥密码。然后我尝试更改keystore密码: 这意味着,我们必须一起更改密钥库密码和密钥密码。但是没有命令可以改变两者。我能做什么呢?