Tag: 数字证书

如何从java中的PFX文件中读取公钥

我能够从PFX文件中读取私钥,但不能读取公钥。 我使用以下代码来读取公钥。 InputStream inStream = new FileInputStream(certFile); CertificateFactory cf = CertificateFactory.getInstance(“X.509”); BufferedInputStream bis = new BufferedInputStream(inStream); // if (bis.available() > 0) { java.security.cert.Certificate cert = cf.generateCertificate(bis); System.out.println(“This part is not getting printed in case of PFX file”); // } puk = (PublicKey) cert.getPublicKey(); 当我从.cer文件中读取时,此代码正常工作。 请帮忙

如何使用x509证书生成数字签名?

我们如何获取x509data和x509certificate标记并将其附加到由以下代码生成的xml中 String providerName = System.getProperty(“jsr105Provider”, “org.jcp.xml.dsig.internal.dom.XMLDSigRI”); XMLSignatureFactory fac = XMLSignatureFactory.getInstance(“DOM”, (Provider) Class.forName(providerName).newInstance()); Reference ref = fac.newReference(“”, fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList( fac.newTransform(Transform.ENVELOPED,(XMLStructure) null)), null, null); SignedInfo si = fac.newSignedInfo (fac.newCanonicalizationMethod (CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, (XMLStructure) null), fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null), Collections.singletonList(ref)); KeyPairGenerator kpg = KeyPairGenerator.getInstance(“RSA”); kpg.initialize(512); KeyPair kp = kpg.generateKeyPair(); KeyInfoFactory kif = fac.getKeyInfoFactory(); KeyValue kv = kif.newKeyValue(kp.getPublic()); KeyInfo ki = kif.newKeyInfo(Collections.singletonList(kv)); […]

使用Java生成带有BouncyCastle的X509Certificate

这就是我现在生成的数字证书。 现在我能够生成一个密码保护私钥的数字证书。 public static void main(String[] args) throws Exception { Security.addProvider(new BouncyCastleProvider()); testKeyStore(); } public static void testKeyStore() throws Exception { try { String storeName = “d://suresh_test.cer”; java.security.KeyPairGenerator keyPairGenerator = KeyPairGenerator .getInstance(“RSA”); keyPairGenerator.initialize(2048); KeyPair keyPair = keyPairGenerator.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); X509Certificate trustCert = createCertificate(“CN=CA”, “CN=CA”, publicKey, privateKey); java.security.cert.Certificate[] outChain = […]

使用SunMSCAPI签署文档并禁止“输入PIN”对话框

我正在开发一个使用证书令牌签署文档的java代码。 到目前为止,一切都很好,但我想抑制“输入引脚”对话框,因为我存储用户的引脚,所以他/她不需要每次都输入它。 这里的真正问题是此代码将以批处理模式运行(无用户交互)。 我知道一旦键入,键可能在内存中,因此不需要在短时间内再次键入。 但我不能依赖它,我需要提供PIN。 这是我到目前为止的代码(它只是一个样本,它可能不完整也不起作用): protected KeyStore loadKeyStoreFromSmartCard() { keyStore = KeyStore.getInstance(“Windows-MY”, “SunMSCAPI”); keyStore.load(null, null); return keyStore; } public void signDocument(byte[] conteudoParaAssinar, String certAlias) { char[] pass = (char[]) null; PrivateKey key = (PrivateKey) loadKeyStoreFromSmartCard.getKey(certAlias, pass); Certificate[] chain = loadKeyStoreFromSmartCard(true).getCertificateChain(certAlias); CertStore certsAndCRLs = CertStore.getInstance(“Collection”, new CollectionCertStoreParameters(Arrays.asList(chain)), “BC”); X509Certificate cert = (X509Certificate) chain[0]; CMSSignedDataGenerator gen […]

我可以通过java在我的系统上安装证书吗?

我可以通过java在我的系统上安装证书吗? 像这样的东西。 Certificate [] certificate = someClass.getsystemCertificates(); 是否有一些api可用于此????

keytool – 查看公钥和私钥

我以编程方式创建了类型为jks的Java密钥库(即默认类型)。 它最初是空的,所以我创建了一个DSA证书。 keytool -genkey -alias myCert -v -keystore trivial.keystore 我怎样才能看到公钥和私钥? 即是否有一个命令打印我的证书的私钥? 我只能找到keytool -certreq ,在我的理解中,它打印整个证书: —–BEGIN NEW CERTIFICATE REQUEST—– MIICaTCCAicCAQAwZTELMAkGA1UEBhMCR1IxDzANBgNVBAgTBkdyZWVjZTEPMA0GA1UEBxMGQXRo BQADLwAwLAIUQZbY/3Qq0G26fsBbWiHMbuVd3VICFE+gwtUauYiRbHh0caAtRj3qRTwl —–END NEW CERTIFICATE REQUEST—– 我认为这是整个证书。 如何通过keytool查看私人(或公钥)?

使用java代码将证书添加到密钥库

我正在尝试使用服务器的.cer证书文件建立https连接。 我可以使用浏览器手动获取证书文件,并使用keytool将其放入密钥库。 然后,我可以使用java代码访问密钥库,获取我添加到密钥库的证书并连接到服务器。 我现在想要实现获取证书文件并使用java代码将其添加到我的密钥库并且不使用keytool或浏览器来获取证书的过程。 有人可以告诉我如何处理这个以及我需要做什么?

将证书链保存在pkcs12密钥库中

以下代码: //used Bouncy Castle provider for keyStore keyStore.setKeyEntry(alias, (Key)keyPair.getPrivate(), pwd, certChain); certChain持有最终证书和颁发者证书(即两个证书), 如果keyStore是PKCS12的实例,则不会将颁发者证书保存为保存到文件系统密钥库文件中的链的一部分。 如果密钥库类型是PKCS12-3DES-3DES它会保存两个证书。 为什么是这样? PKCS12是否假设两个证书都是链的一部分? 编辑:这是一个SSCCE 。 这适用于”JKS” ,失败并显示”PKCS12″ :只有链中的第一个证书可通过getCertificateChain(String)访问。 可以使用openssl pkcs12打开保存的文件,显示两个证书。 public void testKeyStore() { try { KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(“RSA”); keyPairGenerator.initialize(1024); KeyPair keyPair = keyPairGenerator.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); Certificate[] outChain = { createCertificate(“CN=CA”, publicKey, privateKey), createCertificate(“CN=Client”, publicKey, […]