问题标签 [sunpkcs11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
11236 浏览

java - Java 9 中的 SunPKCS11 提供程序

在 Java 8 之前,SunPKCS11 提供程序的加载方式如下:

configFile是一个带有配置参数的字符串。因此,如果应用程序需要使用多个连接的智能卡,它可以创建多个提供程序。要访问每个提供程序,使用的名称是“SunPKCS11-”,后跟我们在配置中指定的名称。

在 Java 8 中,sun.security.pkcs11.SunPKCS11JDK 中删除了该类。所以,我不得不通过反射来编程之前的调用。

Java 9 中 PKCS#11 提供程序的操作似乎非常不同:

  • 构造SunPKCS11函数已更改为空的。配置是通过“configure”方法加载的,所以它必须在磁盘上的文件中,我不能再通过流将它加载到字符串中。

  • 如果我们尝试使用反射,则会出现以下警告:

  • 在 Java 9 中,会自动生成一个 SunPKCS11 提供程序,并在加密提供程序列表中。可以从列表中获取并配置。问题是您只能在列表中加载一个 PKCS#11 提供程序。Java 9 文档表明我们可以使用“SunPKCS11-”后跟我们在配置中指定的名称来获取 PKCS#11 提供程序,但事实并非如此。如果我们查看提供者列表,唯一的一个是“SunPKCS11”,所以我不能每个智能卡都有一个提供者。

这是否也发生在其他人身上?有什么解决办法吗?

0 投票
1 回答
1035 浏览

java - 如何在 Java 中使用 PKCS#11 CKM_AES_KEY_WRAP 机制?

我正在使用一些坚持CKM_AES_KEY_WRAP用于解包 AES 加密密钥的 PKCS#11 令牌。在这些令牌上,CKM_AES_CBC朋友们不支持 unwrap。

因此,在该系统的另一端,我需要使用通过 Java 访问的 PKCS#11 令牌来包装密钥。

SunPKCS11似乎不支持CKM_AES_KEY_WRAP. 据我所知,IAIK 也没有。有没有人对在 Java 中实现这一点有任何建议?

0 投票
1 回答
611 浏览

java - sunpkcs11 是否支持使用 ECDH 派生密钥的 CK_sensitive 属性

我正在尝试使用具有某些属性的 SUNpkcs11 通过 ECDH 生成共享密钥:

虽然我的基本密钥已将 CKA_DERIVE、SENSITIVE 等设置为 true,但这样做时会出现模板不一致的错误:

而 ECC 密钥是使用 HSM 预先生成的。

0 投票
1 回答
2257 浏览

java - 没有这样的算法:提供者 SunPKCS11-CartaoCidadao 的 PKCS11

有我目前的供应商:

0 - 提供者名称:SUN 1 - 提供者名称:SunRsaSign 2 - 提供者名称:SunEC

...

9 - 提供者名称:SunPKCS11-CartaoCidadao

第 9 个提供程序是我尝试使用的提供程序,它使用 pkcs11 库。

使用 info 方法,我可以看到它正在使用库:

SunPKCS11-CartaoCidadao 使用库 /usr/local/lib/libpteidpkcs11.so

然而,当我试图获取一个关键实例时,它告诉我该提供程序没有 PKCS11,它应该这样做。

java.security.KeyStoreException:未找到 PKCS11

引起:java.security.NoSuchAlgorithmException:没有这样的算法:PKCS11 for provider SunPKCS11-CartaoCidadao

任何人都知道如何解决这个问题?

0 投票
1 回答
1818 浏览

java - PKCS#11 与 iText & eTPKCS11.dll & SunPKCS11 Provider 的签名

我在尝试使用链接到 eTPKCS11.dll 的 SunPKCS11 Provider 进行签名时遇到问题。即使使用 iText signDetached,在尝试简单签名时,我也总是得到“线程中的异常”java.security.ProviderException:sun.security.pkcs11.wrapper.PKCS11Exception:CKR_USER_NOT_LOGGED_IN”。

我成功获得PK,通过回调完成认证,回调直接返回令牌密码。似乎令牌需要另一个身份验证过程来进行签名?

该设备是SafeNet eToken 5110,运行在Win7 64位...

非常感谢!

结果:

0 投票
1 回答
1657 浏览

java - java.security.NoSuchAlgorithmException:PKCS11 KeyStore 不可用,尝试在 java 11 中使用 SUNPKCS11 启用 FIPS 模式

我正在尝试在 Java 11 中使用带有 NSS 的 SUNPKCS11 启用 FIPS 模式。我得到了这个异常 java.security.NoSuchAlgorithmException: PKCS11 KeyStore not available。

当我尝试在Java 8中启用 FIPS 时,它工作正常,但在Java 11中执行相同操作会引发异常。

SUNPKCS11 的初始化从 Java 8 更改为 Java 11。

在 Java 8 中:

爪哇 11:

使用配置文件初始化 SUNPKCS11 后,我试图从密钥库中获取提供程序,如下所示。
还有一件事是当我初始化 SUNPKCS11 时,它的Provider.id.info被设置为 Unconfigured and unusable PKCS11 provider,这有什么关系吗?

然后在这里我没有密钥库中的PKCS11。

我的配置文件内容如下所示:

我需要更改配置文件内容中的某些内容还是 Java 11 中的错误?

请帮助我提出宝贵的建议。

0 投票
0 回答
850 浏览

hsm - 使用 PKCS11 设置 Docker

  • 背景

    我们正在开发一个执行加密操作的 Spring 应用程序。项目的要求是这个应用程序的实现应该独立于 HSM 特定的库(因为客户端可能有任何 HSM),因此我们使用了 SunPKCS11 接口。SunPKCS11 接口需要一个 HSM 库文件的路径,该文件实现了常见的 PKCS11 接口。这样,任何具有库实现 PKCS11 接口的 HSM 都可以与应用程序一起使用。

  • 当前状态

    我们有用于测试 HSM 安装位置的主机。HSM 安装程序还提供了实现 PKCS11 接口的库。我们计划使用 Docker 部署这个应用程序。由于应用程序应该独立于 HSM 库,因此我们创建了 docker 映像,其中没有提及 HSM 特定信息。但是,我们使用 docker-compose 文件挂载了 HSM 的完整 lib 文件夹(其中存在 PKCS11 实现库)。当我们执行 docker-compose up 时,它会为属于 HSM 的库提供错误(尽管它安装在 lib 文件夹中)。

加载共享库 xxx.so 时出错

  • 问题

    1. 在这种情况下我应该使用 docker 吗?我在互联网上看到了使用 docker 访问设备的讨论,答案主要是使用其他一些特定于设备的 docker 映像。但是,我不知道要与应用程序(在客户端)一起使用的 HSM 是否会有这样的 docker 映像。
    2. 如果是这样,挂载 HSM 的 lib 文件夹是个好主意吗?在 HSM 安装期间,我安装了 3 个 rpm 文件。这 3 个安装可能具有与 HSM 交互所需的其他库。
    3. 如果我正在做的是正确的方法,错误的原因是什么?

Dockerfile

码头工人撰写文件

我是 Docker 和 Linux 的新手。让我知道,以防我错过提及某些事情。

0 投票
1 回答
1261 浏览

pkcs#11 - 使用 sunPKCS11 提供程序生成密钥对时的 CKR_USER_NOT_LOGGED_IN

尝试使用 sun PKCS11 提供程序生成 rsa 密钥对时,方法generateKeyPair()抛出ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_USER_NOT_LOGGED_IN

我的代码如下所示:

我尝试AuthProvider在提供程序初始化后立即使用,如下所示:

但我没有看到任何日志输出,所以这意味着 lambdas 没有被执行。

最终目标是生成 RSA 密钥对并通过 PKCS11 将其存储在密钥库 (HSM) 中。

我尝试了 openjdk 8 和 oracle jdk 8。此外,当列出密钥库中的别名时,我得到一个空列表,但我知道有一个条目。添加-Djava.security.debug=sunpkcs11没有任何改变。

0 投票
1 回答
193 浏览

java - 为什么列出 pksc11-tool 七个对象但 Java Keystore 只有一个

当我在 cmd 行中执行以下操作时:

我的智能卡上有 7 个对象、3 个公钥对象、3 个证书对象和一个私钥对象。

但是当我尝试用一​​个小的 Java 代码做同样的事情时,我只找到一个证书:

为什么我找不到带有此代码的公钥或其他证书?

0 投票
0 回答
498 浏览

java - 如何修复“删除令牌连接超时后重新连接 SunPKCS11”

我在连接超时后重新连接到 SUNPKCS11 时遇到问题,我想再次重新连接到 SUNPKCS11。

我第一次使用此代码连接到 SUNPKCS11。

它在 1 小时内超时。所以我创建方法 reconnect 用于重新连接到 SUNPCKS11

但是收到一条错误消息:

java.security.InvalidKeyException:私钥必须是 RSAPrivate(Crt)Key 的实例或具有 PKCS#8 编码"

令牌已删除。