Tag: keytool

具有自签名证书的Java SSL连接,无需将完整密钥库复制到客户端

我正在设置一个Java许可servlet以及一个客户端应用程序,该应用程序将发布新许可证请求并validation该服务器上的现有许可证。 servlet在Tomcat中运行。 我已经配置了Tomcat,以便它只允许通过https连接到servlet,这样就可以了。 我使用’keytool -genkey -alias www.mysite.com -keyalg RSA -keystore license.store’创建了一个自签名证书,该证书创建了一个文件license.store并将tomcat指向此keystoreFile,密码为asdf1234 。 当我尝试通过Java中的https从客户端连接到servlet时,我收到熟悉的PKIX path building failed因为证书不在信任库中。 我尝试使用此建议修复此问题,从而生成以下代码: private SSLSocketFactory getSSLFactory() throws Exception { KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); InputStream is = this.getClass().getResourceAsStream(“license.store”); if(is ==null) { return null; } keyStore.load(is, “asdf1234”.toCharArray()); is.close(); TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(keyStore); SSLContext ctx = SSLContext.getInstance(“TLS”); ctx.init(null, tmf.getTrustManagers(), null); return ctx.getSocketFactory(); } […]

从文件导入证书时SSL握手失败

我正在创建一个HTTPS服务器并自己validation证书。 我有一个奇怪的错误。 当我生成证书并添加该密钥库时,我能够进行SSL握手。 keytool -genkey -keyalg rsa -alias mycert -keystore lig.keystore -storepass changeit -keypass changeit 当我使用keytool导入证书并将其添加到密钥库时,我收到SSH Handshake Failure错误。 keytool -noprompt -importcert -file certDer -alias mycert -keystore lig.keystore -storepass changeit -keypass changeit 确切地说,第一个是自签名证书。 第二个是第三方证书。 SSLHandshake适用于自签名证书,但不适用于第三方证书。 任何人都可以告诉为什么? HttpsNetServer.java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.security.KeyStore; import java.security.PrivateKey; import java.security.cert.Certificate; import […]

‘peer not authenticated’SSL证书错误使用DefaultHttpClient

我有一个应用程序jar,我使用DefaultHTTPClient类对象调用HTTPS url,但是它给对等 体validation exception ,所以我想使用keystore对jar进行签名。 我有.cer文件有公钥我可以导入密钥库但是当我使用jarsigner工具时它说没有找到证书链。你必须有私钥和关联公钥。 我也有.pfx文件,这是假设私钥,但我不知道如何导入它。任何人都能告诉我如何导入.pfx文件和在jarsigner中使用的步骤。 如果我在某处错了,请纠正我 UPDATE 根据@Duncan,我可以通过引用此链接在JVM中导入.cer文件。 。 我用bellowed命令将.cer导入cacerts c:\Program Files\Java\jre7\bin>keytool -importcert -alias esbcert -file “e:\Desktop\esbcert\esb.cer” -keystore “c:\Program Files\Java\jre7\lib\security\cacerts” -storepass changeit 在此之后我输入’y’来信任证书 Trust this certificate? [no]: y Certificate was added to keystore 之后我运行我的应用程序,但它仍然给了我javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 堆栈如下: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at sun.security.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.jav a:126) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFact ory.java:572) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnect […]

如何validation自签名jar上的签名?

我用我用keytool生成的密钥签署了我的jar。 在运行时,如何validationjar是否未被修改? 目标是使用证书信息并validation自jar构建以来jar中的每个类都未被修改。 这是运行时检查,因此包含代码的jar可以位于用户文件系统的任何位置。

Keytool EC KeyPairGenerator不可用

当我使用keytool生成ECC密钥时,我收到此错误 : 错误keytool:java.security.NoSuchAlgorithmException:EC KeyPairGenerator不可用 然后用于生成密钥的语法是: keytool -genkey -alias testing -keyalg EC -keysize 256 -keystore try.jks -dname “CN=localhost,OU=dep,O=lks,L=ny,ST=ny,C=USA” 我有这个Java版本: openjdk version “1.8.0_60” OpenJDK Runtime Environment (build 1.8.0_60-b16) OpenJDK 64-Bit Server VM (build 25.60-b16, mixed mode)

jarsigner -verify适用于Java 6,但不适用于Java 7

几天来,我一直在抨击我的头,我完全被难倒了。 这是破败的: 我有一个Eclipse插件项目,使用Tycho来构建Maven 3 在Maven中我已经设置了maven-jarsigner-plugin来使用我的密钥库来签名jar(请参阅下面的密钥库详细信息) 我有一个代码签名证书,由Thawte在我的密钥库中签名 我可以从目标/ *获取任何已签名的jar文件,并在其上运行’jarsigner -verify’。 这是发生的事情: #java 6 on a VM vagrant@test2:/vagrant/com.example.plugins.eclipse/target$ jarsigner -verify com.example.eclipse-0.1.3-SNAPSHOT.jar jar verified. 下一个: #java 7 on a completely different vm vagrant@test1:/vagrant$ jarsigner -verify com.example.eclipse-0.1.3-SNAPSHOT.jar jar verified. Warning: This jar contains entries whose certificate chain is not validated. Re-run with the -verbose and -certs options for more […]

RSA私钥仅支持RSAPrivate(Crt)KeySpec和PKCS8EncodedKeySpec

我按照链接中的步骤操作: 如何读取.pem文件以获取私钥和​​公钥 。 我执行了以下三个命令: 1. $openssl genrsa -out mykey.pem 2048 2. $openssl pkcs8 -topk8 -inform PEM -outform PEM -in mykey.pem -out private_key.pem -nocrypt 3. $ openssl rsa -in mykey.pem -pubout -outform DER -out public_key.der 这创建了三个文件,但是当我尝试通过Java代码读取这些文件时,我开始面临以下错误: PUBLIC KEY EXPO : 65537 Only RSAPrivate(Crt)KeySpec and PKCS8EncodedKeySpec supported for RSA private keys 我的代码供参考: public class PublicPrivateKeyDemo { private […]

java密钥库和密码设置

我在java keystores和keytool上有以下问题。 我假设密钥库可能有多个证书。 正如我所尝试的那样,通过keytool,我可以创建一个密钥库,并且要访问这个密钥库,我必须设置密码。 另外,要访问每个证书条目,我必须设置密码。 是否必须为密钥库和条目使用相同的密码? 如果不是(我认为这是合理的假设)为什么以下代码: char[] pwd = new char[]{‘s’,’e’,’c’,’r’,’e’,’t’}; KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); ks.load(new FileInputStream(“myPersonal.keystore”), pwd); kmf.init(ks, pwd);//fails here with exception 给我以下例外? Exception in thread “main” java.security.UnrecoverableKeyException: Cannot recover key at sun.security.provider.KeyProtector.recover(Unknown Source) at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source) at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source) at java.security.KeyStore.getKey(Unknown Source) secret是访问我通过keytool创建的密钥库myPersonal.keystore的密码。 其中有2个条目,用于证书,1个DSA和1个RSA。 每个密码库都有不同的密码(和彼此)。 现在代码是正确的,因为如果我使用一个密钥库,其中一个证书条目具有与密钥库相同的密码,则没有exception,程序运行正常。 那么这里的问题是什么? 我不应该有不同的密码? 我不应该有很多证书? 或者是什么?

java.lang.Exception:回复和密钥库中的公钥不匹配

我必须访问在443端口托管的Web服务。服务提供商与我们共享了三个证书。 ABCD.cer CA_Certificate.cer CCA_Certificate.cer 我必须通过为SSL通信创建表单链将它们添加到密钥库。我已按照以下步骤操作。 keytool -keystore npci_keystore_test.jks -genkey -alias npci_client_testore Result :- keystore npci_keystore_test.jks created. keytool -import -keystore npci_keystore_test.jks -file CA_Certificate.cer -alias theCARoot Result :- certificate CA_Certificate.cer is added to keystore. keytool -import -keystore npci_keystore_test.jks -file CCA_Certificate.cer -alias theCCARoot Result :- certificate CCA_Certificate.cer is added to keystore. keytool -import -keystore npci_keystore_test.jks -file ABCD.cer -alias […]

Jarsigner:找不到证书链

我已将证书导入私有~/.keystore文件: keytool -list Enter keystore password: Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry mylyn-mantis, Jul 15, 2010, trustedCertEntry 我正试图用它签一个jar子,但我得到一个’找不到证书链’的错误。 jarsigner -verbose /home/robert/file.jar mylyn-mantis jarsigner: Certificate chain not found for: mylyn-mantis. mylyn-mantis must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain. 我怎么解决这个问题?