当前位置: 首页 > 知识库问答 >
问题:

从智能卡读取证书

虞安康
2023-03-14

我正试图从智能卡读取证书,

import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.Provider;
import java.security.Security;
import java.security.cert.X509Certificate;
import java.util.Enumeration;

public class Test {

    public static void main(String[] args) throws Exception{
                Provider pkcs11Provider =new sun.security.pkcs11.SunPKCS11("c:\\dev\\pkcs11.cfg");
                char [] pin = {'1', '2', '3', '4'};
                KeyStore smartCardKeyStore = KeyStore.getInstance("PKCS11",pkcs11Provider);
                smartCardKeyStore.load(null, null);
                Enumeration aliasesEnum = smartCardKeyStore.aliases();
                while (aliasesEnum.hasMoreElements()) {
                   String alias = (String)aliasesEnum.nextElement();
                   System.out.println("Alias: " + alias);
                   X509Certificate cert =
                   (X509Certificate) smartCardKeyStore.getCertificate(alias);
                   System.out.println("Certificate: " + cert);
                   PrivateKey privateKey =
                      (PrivateKey) smartCardKeyStore.getKey(alias, null);
                   System.out.println("Private key: " + privateKey);
                }

    }

}

这是我从http://www.developer.com/java/other/article.php/3587361/Java-Applet-for-Signing-with-a-Smart-Card.htm我将在applet中执行这段代码,问题是每个用户都必须向我指出他们的本地pkcs11。。。dll,使用java samrtcard api是否可以避免加载此dll?(没有找到任何使用java智能卡api加载证书的示例)使用SunPKCS11小程序jar是否有任何方法可以包含dll,以便客户端浏览器不需要提供给我

共有1个答案

严朝明
2023-03-14

如果使用JWS/JNLP来定义applet,而不是

 类似资料:
  • 因此,我正在尝试编写一个小applet,它使用library。智能卡与读卡器连接,现在我成功连接到智能卡并读取基本信息,如ATR和协议(T=1)。 我对此做了一些研究(例如:http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_5_basic_organizations.aspx#table9) 但我不知道我应该向卡上发送哪

  • 摘要:在PKCS11和OpenSC上使用JCA时,在提取证书时会请求PIN。 我有一个应用程序需要使用智能卡签名。智能卡由OpenSC支持,所以我使用Java内置的pkcs11包装提供程序来使用它。出于功能原因,我需要在不需要PIN的情况下获得卡中的证书。如果用户最终签名,那么当然需要PIN。 我明白了,我可以在命令行中完成,而无需提供PIN: 到目前为止,一切顺利。 Oracle的文档清楚地说,

  • 我使用ACR122U-A9读取智能卡,通过以下APDU,我可以获取UID和ATS: 使用NXP TagInfo应用程序(android),我可以看到一个包含我所需数据的十六进制表。使用什么APDU命令可以检索这些数据? 六边形表如下所示: [0000]中是我想要检索的数据。

  • 我有行车记录仪公司卡,用于在允许客户通过远程下载方式下载行车记录仪数据之前,对客户进行身份验证。下面代码中使用的APDU命令是行车记录仪和公司卡之间成功认证的命令。 双方之间的联系如下: 行车记录仪 如上所述的通信运行良好,应用用户正在进行身份验证。现在我试图读取一些信息直接从公司卡没有应用程序如下: 我的客户端程序 在我的客户端程序中,我使用的是从Android应用程序发送到公司卡的相同APDU

  • 问题内容: 因此,最近我一直在使用具有一些信息的智能卡,而我想要在此处实现的目标是使用智能卡读取器通过任何Android智能手机从这些智能卡中获取此数据。我一直在使用HID OMNIKEY 3021 USB 智能卡读取器来读取这些卡(而且我知道此读取器可通过Windows应用程序与这些卡配合使用,因为我已经对此进行了亲自测试) 现在,Android提供了USB主机,只要Android智能手机支持它

  • 我有一个Java应用程序,可以从智能卡读取证书,并使用它们登录用户。该应用还可以使用其他登录方法(用户名和密码)跟踪失败的登录尝试。 我想知道是否有可能在没有引脚的情况下从智能卡中读取用户信息?我想将失败的pin条目标记为失败的登录尝试,但是因为我需要pin从证书中读取别名,所以我无法知道哪个用户正在尝试登录。有没有读取这些信息没有引脚在Java? 我根据这个线程的建议尝试加载KeyStore对象