如何在java中从eToken访问证书

如何在java中从eToken访问证书,java,encryption,cryptography,certificate,devicetoken,Java,Encryption,Cryptography,Certificate,Devicetoken,我想在eToken插入时读取它的证书,当我在本地机器上存储该证书时,我可以通过java应用程序读取它,但我不知道如何从eToken读取它 RSAPublicKey pub; String fileName = "C:\\myCert.cer"; InputStream inStream = new FileInputStream(fileName); CertificateFactory cf = Certificat

我想在eToken插入时读取它的证书,当我在本地机器上存储该证书时,我可以通过java应用程序读取它,但我不知道如何从eToken读取它

RSAPublicKey pub;
            String fileName = "C:\\myCert.cer";

             InputStream inStream = new FileInputStream(fileName);
             CertificateFactory cf = CertificateFactory.getInstance("X.509");
             X509Certificate cert =
        (X509Certificate)cf.generateCertificate(inStream);
             inStream.close();

             pub = (RSAPublicKey) cert.getPublicKey();
             System.out.println(cert.getIssuerDN());
             System.out.println(cert.getSubjectDN());
             System.out.println(cert.getSubjectAlternativeNames());
             byte [] tempPub = pub.getEncoded();
             String sPub = new String( tempPub );

一种方法是使用。还有一些例子。

请注意,PKCS#11提供程序仅在32位版本的Oracle Java 6&7中可用。@emboss感谢您的重播,但当我插入USB令牌时,我可以从mozila firefox->工具->选项->查看证书中看到myCert,拔出后我无法访问该证书吗?正如我在我的代码中提到的,从您给定的链接,我可以这样做吗?请告诉我,我真的被困在这里了……当然,文档中都有概述。基本上,您可以向PKCS#11提供者提供在何处查找本机PKCS#11库的信息,然后您可以使用
密钥库
(不要忘了使用
KeyStore.getInstance(“PKCS11”)
)访问证书和密钥。@emboss我正在按照您的说明进行尝试,但在KeyStore key=KeyStore.getInstance(“PKCS11”)时出错,pro)as:java.security.nosuchalgorithexception:no这样的算法:PKCS11用于提供程序SunPKCS11-Aladdin。我还尝试了KeyStore.getInstance()的多种组合;但还是卡住了。在配置文件中,我放置了C:/WINDOWS/system32/eTPKCS11.dll。您确定编辑了正确的java.security文件吗?在使用多个JRE时,这种情况经常发生在我身上?