Tag: truststore

java安全套接字没有认证?

我有一个简单的安全套接字服务器 – 客户端程序。 对于服务器证书,我使用keytool创建了一个密钥库。 当我尝试通过我的客户端连接到服务器时,我得到以下exception: 在服务器中: Exception in thread “main” javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 在客户端: Exception in thread “main” javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) 如果我的理解是正确的,那么这些例外是由于我使用我创建的证书这一事实引起的。 我的问题如下: 如果我在服务器和客户端中设置启用的密码套件,所有* _anon *密码套件,这不应该解决问题吗? 我的意思是如果我启用*_anon_*密码套件,则不需要身份validation,因此没有例外。 它是否正确? 因为我仍然有例外。 我尝试在启用的密码套件中启用所有已启用的+ _anon密码套件。 没有成功。 我尝试只设置anon并获得一个新例外: Exception in thread “main” […]

使用Java与MySQL服务器建立SSL连接

我正在尝试使用Java over SSL连接到MySQL服务器。 我收到以下exception: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot connect to MySQL server on www.mysite.com:3306. Make sure that there is a MySQL server running on the machine/port you are trying to connect to and that the machine this software is running on is able to connect to this host/port (ie not firewalled). Also make sure that the server […]

信任过期的证书

在与具有过期证书的https服务器通信时,我的客户端失败并出现以下错误。 虽然我们正在等待通过更新来修复服务器端,但我想知道我们是否可以通过将过期的证书添加到我们自己的信任存储来传递此错误? 这样我们就可以在等待续订证书的同时获得一些测试时间。 US has an end date Thu Sep 08 19:59:59 EDT 2011 which is no longer valid. [4/17/13 19:22:55:618 EDT] 00000021 SystemOut O WebContainer : 0, SEND TLSv1 ALERT: fatal, description = certificate_unknown [4/17/13 19:22:55:620 EDT] 00000021 SystemOut O WebContainer : 0, WRITE: TLSv1 Alert, length = 2 [4/17/13 19:22:55:620 EDT] 00000021 SystemOut […]

Java – javax.net.ssl.SSLPeerUnverifiedException:peer未经过身份validation

我正在尝试使用自己的SSL客户端连接到我自己的SSL服务器,但是我收到以下错误: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at sun.security.ssl.SSLSessionImpl.getPeerCertificateChain(SSLSessionImpl.java:420) at server.run(Server.java:70) at server.main(Server.java:22) 我在stackoverflow上搜索了同样的问题,但我只能找到在Apache或其他HTTPS“系统”中使用它的人。 这是我的服务器代码: /* Server SSL */ import javax.net.ssl.*; import java.io.*; import java.net.InetAddress; import java.security.KeyStore; //import java.security.cert.X509Certificate; import java.util.Date; import javax.security.cert.X509Certificate; class server { ObjectOutputStream out; ObjectInputStream in; public static void main(String[] args) { new server().run(); } void run() { Date date = new Date(); […]

您是否需要密码才能访问信任库(使用java keytool)?

我刚刚使用java keytool创建了一个信任库(用于没有CA证书的服务器的服务器身份validation)。 但是我只是注意到一些奇怪的事 我这样开始我的客户: java -Djavax.net.ssl.trustStore=/client.keystore -classpath Client (注意:没有指定密码) 以上呼叫有效。 但是,当我尝试这个: java -classpath Client 这是行不通的。 (显然它不起作用,它需要信任库)。 我本来希望传递这个选项(但我没有): -Djavax.net.ssl.trustStorePassword=mypass 问题 :您是否需要密码才能访问信任库? 密码只是用于修改吗? 密钥库怎么样?

添加trustStore以进行客户端身份validation

服务器和相应的客户端支持客户端身份validation,但如下所示: SSLHandshakeException:没有共同的密码套件 ,没有trustStore引用,即它们使用默认的trustStore。 如何指定trustStore? ClassFileServer: private static ServerSocketFactory getServerSocketFactory(String type) { if (type.equals(“TLS”)) { SSLServerSocketFactory ssf = null; Properties systemProps = System.getProperties(); systemProps.put( “javax.net.ssl.trustStore”, “cacerts.jks”); systemProps.put( “javax.net.ssl.trustStorePassword”, “p@ssw0rd”); System.setProperties(systemProps); try { // set up key manager to do server authentication SSLContext ctx; KeyManagerFactory kmf; KeyStore ks; char[] passphrase = “p@ssw0rd”.toCharArray(); ctx = SSLContext.getInstance(“TLS”); kmf = […]

使用truststore的java ssl连接

我有一个连接到https站点的Web应用程序。 为此,我必须在lib / security文件夹中的cacerts中安装证书。 我想创建一个信任库并将其放在应用程序中,并在连接到其他站点时使应用程序引用此信任库,以便在移动应用程序时,证书随之移动。 我连接到https网站的方式是使用表单post。 我该怎么做呢 此外,在执行表单发布而不是使用HttpsURLConnection时,如何配置以查看自定义信任库而不是cacerts。

在JVM信任库中列出证书

我已经通过系统属性定义了一个自定义信任库: System.setProperty(“javax.net.ssl.trustStore”, …); System.setProperty(“javax.net.ssl.trustStorePassword”, …); 鉴于VM已经负责加载文件,我想列出那些已加载的证书。 我不想再次将信任库加载到流中并从那里获取证书,而是希望看到VM已经自己加载的那些。 另外,我希望从我自己的应用程序中看到它们,而不是使用单独的工具。 我做了一些谷歌搜索,但到目前为止,我一直无法找到这个。

在JBoss 7中设置正确的信任库

我想从JBoss 7应用程序发送电子邮件。 SMTP服务器需要与自签名证书的TLS连接。 如果我尝试发送电子邮件,我会收到SSLHandshakeException,因为无法检查服务器证书。 为了解决这个问题,我添加了这个: http : //springinpractice.com/2012/04/29/fixing-pkix-path-building-issues-when-using-javamail-and-smtp/ (将SMTP服务器证书放入java信任库文件) 我现在的问题是如何将truststore文件设置为JBoss 7? 我在stackoverflow和其他论坛上知道这个问题有几个答案。 但我没有找到合适的人选。 我已经尝试过以下几点: 将JAVA_OPTS=”$JAVA_OPTS -Djavax.net.ssl.trustStore=/home/stewert.c-on/data/projects/keystore/devel.truststore -Djavax.net.ssl.trustStorePassword=123456″到: jboss-as-7.1.1.Final/bin/standalone.conf jboss-as-7.1.1.Final/bin/domain.conf jboss-as-7.1.1.Final/bin/appclient.conf 添加到jboss-as-7.1.1.Final/standalone/configuration/standalone.xml 但是,如果我在运行时使用’System.getProperty(“javax.net.ssl.trustStore”)检查系统环境变量,我会在每种情况下都获得null! 我的环境: Linux的 JBoss 7.1 JDK 7 我正在Eclipse Eclipse里面开始JBoss 谁知道出了什么问题? 我必须在哪里设置信任库? 谢谢,斯蒂芬

PoolingHttpClientConnectionManager:如何做Https请求?

我目前正在尝试使用CloseableHttpClient同时执行多个HttpGet请求。 我搜索了如何做到这一点,答案是使用PoolingHttpClientConnectionManager 。 此时我得到了这个: PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager(); CloseableHttpClient httpClient = HttpClients.custom() .setConnectionManager(cManager) .build(); 然后我尝试了http://www.google.com的HttpGet请求,一切正常。 然后我通过cmd创建了一个信任库并导入了目标网站的证书,用我的信任库设置了SSLConnectionSocketFactory并设置了httpClient的SSLSocketFactory : KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); FileInputStream inputStream = new FileInputStream(new File(“myTrustStore.truststore”)); trustStore.load(inputStream, “nopassword”.toCharArray()); inputStream.close(); SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(trustStore).build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager(); CloseableHttpClient httpClient = HttpClients.custom() .setSSLSocketFactory(sslsf) .setConnectionManager(cManager) .build(); 如果我尝试执行Https HttpGet那么我会得到一个PKIX […]