Tag: keytool

javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:没有主题替代名称

基本上,我有一个测试服务器(基于Linux),公共IP机器人没有公共主机名。 所以我正在尝试使用IP地址为它创建ssl证书。 这样我的Java应用程序就可以使用IP地址访问另一个应用程序:例如: https://210.10.10.10:8443/abc 我在下面发帖说明: 如何解析SSL证书服务器名称/我可以使用keytool添加备用名称吗? 我确实尝试了两种方法,以避免这种exception,但非工作。 我得到了同样的错误。 我尝试编辑“openssl.cnf”并添加: [req] req_extensions = v3_req [ v3_req ] # Extensions to add to a certificate request subjectAltName=IP:210.10.10.10 # or subjectAltName=DNS:www.example.com basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment 2.还尝试使用Java 1.7 keytool: 就像创建(在具有java 1.7的Windows中创建并将所有证书和jks文件复制到Linx服务器env,在java 1.6上运行): keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore myServerKeystore2.jks -srckeystore serverCertAsPK12.p12 -srcstoretype PKCS12 -alias […]

密钥库不适用于Java 9

我已经使用portecle将JKS密钥库转换为P12格式,但它可能并不顺利。 密钥库使用Java 8(各种版本),但使用Java 9(OpenJDK 64位服务器VM(构建9内部+ 0-2016-04-14-195246.buildd.src,混合模式),我得到了 java.io.IOException: Invalid keystore format at sun.security.provider.JavaKeyStore.engineLoad(java.base@9-internal/JavaKeyStore.java:659) at sun.security.util.KeyStoreDelegator.engineLoad(java.base@9-internal/KeyStoreDelegator.java:219) at java.security.KeyStore.load(java.base@9-internal/KeyStore.java:1466) at org.eclipse.jetty.util.security.CertificateUtils.getKeyStore(CertificateUtils.java:52) at org.eclipse.jetty.util.ssl.SslContextFactory.loadKeyStore(SslContextFactory.java:998) at org.eclipse.jetty.util.ssl.SslContextFactory.load(SslContextFactory.java:252) at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:219) 有趣的是Java 8 keytool显示 Keystore type: JKS Keystore provider: SUN Your keystore contains 5 entries … entries listed 而来自Java 9的那个显示 Keystore type: PKCS12 Keystore provider: SUN Your keystore contains 5 entries … […]

自签名证书:DNSName组件必须以字母开头

有没有办法让java的keytool在SAN中使用通配符生成自签名证书(主题备用名称)? 我正在使用此命令生成密钥库: keytool -genkey -alias tomcat -storetype JKS -keyalg RSA -keysize 2048 -ext san=dns:*.example.com -keystore “path/to/my/keystore.jks” -validity 3650 但我得到IOException: DNSName components must begin with a letter 显然,问题是SAN中的*.example.com ,但我没有看到为example.com子域生成自签名证书的其他方法。 据此,它应该是可能的。 这是我的语法错误,keytool中的错误,还是我误解了什么? 顺便说一句,我正在使用JDK 1.8 update 60中的keytool 编辑我设法通过指定CN=*.example.com ,并将SAN留空,通过keytool为所有example.com子域生成自签名证书。 尽管如此,我会将Omikron的答案视为已被接受(因为它是一个真正的答案,而不是绕过限制)。

如何从Java生成,签名和导入SSL证书

可能重复: 使用Java生成证书,公钥和私钥 我需要在运行时生成自签名证书,签名并导入Java密钥库。 我可以通过命令行中的“keytool”和“openssl”以下列方式执行此操作: keytool -import -alias root -keystore keystore.txt -file cacert.pem keytool -genkey -keyalg RSA -keysize 1024 -alias www.cia.gov -keystore keystore.txt keytool -keystore keystore.txt -certreq -alias www.cia.gov -file req.pem openssl x509 -req -days 3650 -in req.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out reqsigned.pem keytool -import -alias www.cia.gov -keystore keystore.txt -trustcacerts -file reqsigned.pem 当然,我可以使用keytool和openssl二进制文件发送我的应用程序并从Java执行上述命令,但我正在寻找一种更清晰的方法,这将允许我使用纯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 你知道如何解决这个问题吗?

如何使用keytool打印证书的公钥?

有没有办法在keytool中打印证书的publick键? 我试过了: keytool -printcert -file client.crt 但它只提供以下信息: Owner: CN=client, OU=as, O=as, L=as, ST=as, C=as Issuer: EMAILADDRESS=as, CN=ca, OU=as, O=as, L=as, ST=as, C=as Serial number: 3 Valid from: Tue Apr 10 12:18:47 GMT+05:30 2012 until: Wed Apr 10 12:18:47 GMT+05 :30 2013 Certificate fingerprints: MD5: 26:C0:29:E9:8C:AB:C3:9E:95:38:74:8A:87:D3:86:8D SHA1: 5C:5A:BA:47:44:83:7E:CB:48:BE:DD:E5:39:51:24:42:C6:C5:60:8B SHA256: DA:26:B8:C8:F4:04:3E:62:F3:7F:3B:EC:1D:9F:85:66:28:00:45:55:66: 15:FF:BB:37:77:97:59:F0:EC:0B:B6 Signature algorithm name: SHA1withRSA Version: […]

keytool:证书导入提供错误消息 – 密钥库被篡改,或密码不正确

我的目标是生成证书,将其导出到文件中并导入JDK密钥库。 在第一步中,我使用以下命令生成了自签名证书,为密钥库和密钥提供密码作为“密码”: keytool -genkeypair -keystore .keystore -alias uasera -keyalg RSA 在第二步中,我使用类似的密码和以下命令导出证书: keytool -exportcert -keystore .keystore -alias usera -file usera.crt 现在! 我试图使用类似的密码和以下命令在JDK中的cacerts中导入此证书,但获得exception。 keytool -importcert -file usera.crt -keypass password -keystore “C:\Program Files\Java\jdk1.7.0_13\jre\lib\security\cacerts” 错误 K:\ java \ certificates> keytool -importcert -file usera.crt -keypass password -keystore“C:\ Program Files \ Java \ jdk1.7.0_13 \ jre \ lib \ security \ […]

Keytool创建受信任的自签名证书

我正在尝试使用(java)keytool创建自签名证书,但是当我尝试使用它时,我得到以下exception(请参阅底部的整个exception)。 … Caused by: sun.security.validator.ValidatorException: No trusted certificate found at sun.security.validator.SimpleValidator.buildTrustedChain(SimpleValidator.java:304) at sun.security.validator.SimpleValidator.engineValidate(SimpleValidator.java:107) at sun.security.validator.Validator.validate(Validator.java:203) at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:172) at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(SSLContextImpl.java:320) at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:841) … 22 more 我知道我可以用这段代码绕过这个: import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLSession; HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String urlHostName, SSLSession session) { System.out.println(“Warning: URL Host: ” + urlHostName + ” vs. ” + […]

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

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

将证书链添加到p12(pfx)证书

我在java和cxf中有应用程序,它使用客户端证书连接到WebServices。 我从WebService所有者那里获得了证书 certificate.p12 certificate.pem certificate.crt trusted_ca.cer root_ca.cer 我有问题,直接将此p12证书转换为java要求的工作jks密钥库。 我这样做了: keytool -importkeystore -srckeystore certificate.p12 -srcstoretype PKCS12 -destkeystore certificate1.jks -deststoretype JKS -storepass secret keytool -import -alias root -file root_ca.cer -trustcacerts -keystore certificate1.jks -storepass secret keytool -import -alias trusted -file trusted_ca.cer -trustcacerts -keystore certificate1.jks -storepass secret 但这个jks不起作用,我在使用这个certificate1.jks时得到HTTP响应’403:Forbidden’ 但是,如果我将此p12(pfx)证书导入Internet Explorer,然后将此证书从IE导出为pfx格式,选择“在证书路径中包含所有证书”复选框并使用: keytool -importkeystore -srckeystore certificate.pfx -srcstoretype PKCS12 -destkeystore certificate2.jks -deststoretype […]