Tag: 证书

如何从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完成上述所有操作。 我可以使用的任何库?

在Java中使用具有相同主机的多个SSL客户端证书

在我的Java应用程序中,我需要使用SSL连接到同一主机,但每次都使用不同的证书。 我需要使用不同证书的原因是远程站点使用证书中嵌入的用户ID属性来标识客户端。 这是一个在3个不同操作系统上运行的服务器应用程序,我需要能够在不重新启动进程的情况下切换证书。 另一位用户建议将多个证书导入同一个密钥库。 但是,我不确定这会对我有所帮助,除非有办法告诉Java要在密钥库中使用哪个证书。

JavaFX WebView无法使用不受信任的SSL证书

我正在使用JavaFX开发一个简单的嵌入式浏览器: final WebView browser = new WebView(); final WebEngine webEngine = browser.getEngine(); 当我使用webEngine加载任何http网站时,它工作正常: webEngine.load(“http://google.es”); 尽管如此,如果我尝试使用不受信任的证书(我自己的ssl证书)加载网站, webEngine不起作用,我在浏览器中看到一个白色屏幕。 有没有办法(自动)信任我的ssl证书?

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。 哪里不对?

如何使用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. ” + […]

J2ME Midlet – 自签名证书

我想签署我的应用程序但我不希望其用户在安装我的应用程序之前在他们的手机上安装证书。 是否可以使用自签名证书签署j2me midlet?

在Java HTTP连接中将客户端证书设置为请求属性?

我有一个Java应用程序通过带有SSL的套接字连接到另一个Java应用程序,因此我的客户端JVM已经设置了-Djavax.net.ssl.keyStore和-Djavax.net.ssl.trustStore属性。 此应用程序需要向需要客户端身份validation的Web服务器发出一些HTTP请求。 我可以使用Java中的URLConnection打开连接,返回HTTPSURLConnectionImpl 。 我想在请求中向Web服务器提供的客户端证书与设置为我的JVM系统属性的客户端证书不同。 有没有办法设置客户端证书。 作为HTTPSURLConnectionImpl的请求属性?

如何使用Java创建X509证书?

我想使用Java语言创建X509证书,然后从中提取公钥。 我搜索了互联网,发现了许多代码示例,但是所有代码都有错误(未知变量或未知类型)或者有很多警告,例如:“方法……来自类型……已被弃用”等。 例如,为什么以下代码不起作用: PublicKey pk; CertificateFactory cf = CertificateFactory.getInstance(“X.509”); String PKstr = pk.toString(); InputStream PKstream = new ByteArrayInputStream(PKstr.getBytes()); X509Certificate pkcert = (X509Certificate)cf.generateCertificate(PKstream); 谁能告诉我如何使用纯Java或Bouncy Castle创建证书,然后从中获取公钥? 谢谢大家。