Tag: pkcs#12

Sun Java KeyManagerFactory和空密码

我们在Sun JRE 1.6中遇到了KeyManagerFactory的问题。 我们使用类似以下的代码上传和使用p12格式的证书: KeyStore keyStore = KeyStore.getInstance(PKCS12); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(SUN_X509); InputStream certificateFile = getSSLCertificate(); String certificatePassword = getSSLCertificatePassword(); keyStore.load(certificateFile, certificatePassword); keyManagerFactory.init(keyStore, certificatePassword); 当证书密码存在时,此代码可以正常工作。 但是当证书密码为空(因此证书不受密码保护)时,我们会从keyManagerFactory.init行得到除以零的错误。 有谁知道为什么会这样? 没有密码就不能使用证书吗? 谢谢

如何使用java PKCS#12密钥库中的证书来加密和解密文件?

任何人都可以解释如何使用存储在java’PKCS#12`密钥库中的证书加密和解密文件?

阅读pkcs12证书信息

我有一个readng证书信息的问题。我想以编程方式在Android中使用带有bouncycastle库的java阅读完整信息。 现在,我只是在控制台中使用keytool命令 >keytool -list -keystore 1.p12 -storetype pkcs12 -v 有什么建议么?

使用或不使用OpenSSL将SSL .pem转换为.p12

我得到需要转换为.p12文件的外部.pem文件 – 我在此过程中添加了用户名和密码。 (我需要这样做才能使用第三方API。) 使用openssl ,命令是…… openssl pkcs12 -export -in xxxx.pem -inkey xxxx.pem -out xxx.p12 -passout pas:newpassword -name “newname” 我可以从终端会话运行它,它完美地工作。 但是,我需要经常这样做,并编写了一个Java类来处理这个和更多(我的应用程序主要是.jsp与Tomcat和Apache)。 当我尝试使用Runtime.exec从Java运行相同的命令时,我得到了可怕的“无法写入’随机状态’”错误( 使用OpenSSL“无法写入’随机状态’”是什么意思? )。 我假设不同之处在于,当我从Java运行时,用户不是“root”。 那么,是否有更好的方法使用Java库从pem转换为.p12而不是执行命令行程序(即openssl)? 否则,我想我需要在我的服务器上进行一些配置。 我在服务器上的任何地方都找不到任何.md文件。 唯一的openssl.cnf文件位于一个奇怪的目录( /etc/pki/tls )中。 我是否需要在其他地方创建一个新的openssl.cnf文件?

如何设置Java以使用Eclipse的用户特定证书?

我无法相信我是唯一一个遇到这个问题的人。 我一直在谷歌搜索几个小时,没有运气。 Java安全文档似乎没有彻底解决PKCS12证书。 我正在尝试为用户特定的PKCS12证书设置Java。 除此之外,还将使用它,以便在Eclipse中,我可以访问通过证书进行身份validation的Trac服务器。 我正在使用Trac Mylyn集成插件进行eclipse。 这是设置: 用户主目录位于/ home 多用户安装在/中央 每个用户都有一个个人证书:〜/ user.p12 个人证书的密码是:pass1234 用户密码存储在〜/ password.txt的0400文件中 ca的只读信任存储位于:/central/ca.jks 没有信任库的密码 JDK 1.6安装在/central/jdk_1.6.0 Eclipse 3.4安装在/central/eclipse_3.4.0 JAVA_HOME = /中央/ jdk_1.6.0 JAVA_HOME设置为JDK位置,因为Eclipse需要它 ECLIPSE_HOME = /中央/ eclipse_3.4.0 JRE住在$ JAVA_HOME / jre 每个用户都有一个〜/ .java.policy文件 有一个运行在https://trac.internal/trac的trac服务器 trac服务器使用证书进行身份validation 现在,我希望能够让每个用户只修改他们拥有的某个文件(例如〜/ .java.policy文件),并能够启动中央Eclipse应用程序并访问Trac存储库。 看起来很简单。 现在,我能让它工作的唯一方法是编辑$ ECLIPSE_HOME / eclipse.ini文件并添加 -Djavax.net.ssl.keyStore=”/home/user/user.p12″ -Djavax.net.ssl.keyStoreType=”PKCS12″ -Djavax.net.ssl.keyStorePassword=”pass1234″ -Djavax.net.ssl.trustStore=”/central/ca.jks” 好的,这有效,但有两个问题: 每个用户都必须安装自己的ecipse。 (或者可以从用户文件中读取它?) 它特定于Eclipse,我最终希望将其作为Java配置。 另外,我记得有一段时间你可以编辑$ […]

是什么导致keytool错误“无法解密安全内容条目”?

我试图使用此命令将标准PKCS#12(.p12)密钥库转换为Java JKS密钥库: keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore keystore.jks 失败的是: keytool error: java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded 你知道如何解决这个问题吗?

以编程方式将.cer证书导入密钥库

如何将类路径中的.p12证书导入java密钥库? 首先,我使用了InstallCert https://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/util/InstallCert.java并进行了一些更改,因此服务器证书将被导入到java安装目录中的密钥库中。 这工作正常,但现在我想从我的类路径加载证书。 编辑:我只是使用.cer证书,请参阅下一个答案

PKCS#12:DerInputStream.getLength()exception

我使用keytool命令生成证书: keytool -genkeypair -alias myRSAKey -keyalg RSA -keysize 1024 -keystore test.p12 -storepass test -storetype pkcs12 然后,如果我尝试使用java安全API加载它,在将文件作为byte []获取后: KeyStore ks = KeyStore.getInstance(“PKCS12”); try{ ks.load(new ByteArrayInputStream(data), “test”.toCharArray()) } catch (Exception e){ … } 我得到一个DerInputStream.getLength():lengthTag = 127,太大的exception。 哪里不对?

签署Android应用程序抛出IOException:找到冗余长度字节

我们正在开发Cordova应用程序,并且无法签署该应用的Android版本。 使用命令 jarsigner -keystore keystore.p12 -storetype pkcs12 android-release-unsigned.apk 1 给出以下例外 java.io.IOException: DerInputStream.getLength(): Redundant length bytes found 来自OpenJDK中的这一行 显然是为了修复CVE-2016-5546而添加的,虽然我不太了解加密来真正理解它。 使用openssl导出证书并从中创建新的p12工作正常,但更改签名,这意味着Play商店拒绝上传。 我们的密钥库来自另一家我们最初将应用程序开发外包给的公司。 任何jarsigner或keytool命令都抛出相同的exception,我认为它是有意义的,因为它们都使用相同的Java lib

来自CA的PKCS12 Java密钥库和java中的用户证书

我最近负责用Java模拟Apple产品(iPhone配置实用程序)。 我一直有点困惑的部分之一是关于Exchange ActiveSync的一部分。 在那里,它允许您从钥匙串中选择一个证书作为您的EAS帐户的凭据。 经过一些研究,我发现它实际上是在创建一个PKCS12密钥库,插入我选择的证书的私钥,并将其编码为XML。 到目前为止还没什么大不了的。 如果我使用Keychain Access创建一个.p12文件,它上传没有问题。 但是当我尝试将其转移到Java时,我遇到了一个问题。 假设我将之前使用过的.s12文件中的一个作为.cer文件导出(这是我们期望在环境中获得的)。 现在当我将它上传到Java时,我得到一个Certificate对象如下… KeyStore ks = java.security.KeyStore.getInstance(“PKCS12”); ks.load(null, “somePassword”.toCharArray()); CertificateFactory cf = CertificateFactory.getInstance(“X.509”, new BouncyCastleProvider()); java.security.cert.Certificate userCert = cf.generateCertificate(new FileInputStream(“/Users/me/Desktop/RecentlyExportedCert.cer”)); 但是当我尝试…… ks.setCertificateEntry(“SomeAlias”, userCert); 我得到例外…… java.security.KeyStoreException: TrustedCertEntry not supported 所以从证书我转移到键。 但是使用这些证书(我也获得了CA证书),我只能访问公钥,而不是私钥。 如果我试图像这样添加公钥… java.security.cert.Certificate[] chain = {CACert}; ks.setKeyEntry(“SomeAlias”, userCert.getPublicKey().getEncoded(), chain); 我明白了…… java.security.KeyStoreException: Private key is not stored as PKCS#8 […]