Tag: ssl

Java RMI + SSL +压缩=不可能!

我已经设置了RMI + SSL。 这很好用。 但似乎不可能在RMI和SSL之间减少压缩。 这样RMI请求在通过SSL发送之前就会被压缩。 我在网上看到一些post建议使用SSLSocketFactory.createSocket() ,它使用Socket将SSL包装在压缩套接字上。 但这似乎会尝试压缩SSL协议本身,这可能不是非常可压缩的。 我想我应该创建一个Socket代理( Socket子类,它推迟到另一个Socket ,就像FilterOutputStream那样)。 让代理用压缩包装输入/输出流。 让我的SocketFactory和ServerSocketFactory返回代理,包装SSLSocket 。 但后来我们遇到了缓冲问题。 压缩缓冲数据,直到它足够值得压缩,或被告知要刷新。 当您没有通过套接字进行来回通信时,这很好。 但是使用RMI中的缓存套接字,你就可以了。 无法识别RMI请求的结束,因此您可以刷新压缩数据。 Sun有一个RMISocketFactory示例做这样的事情,但他们根本没有解决这个问题。 笔记: 1. SSL支持压缩,但我在JSSE中找不到任何关于启用它的信息 2.我知道对许多小的无关块进行压缩(因为RMI通常由其组成)并不是非常有益。 3.我知道如果我发送大量请求,RMI不是最好的选择。 4. Java 6中有一个SSLRMISocketFactory ,但它不会在我的自定义实现中添加任何内容。

无法从Weblogic访问HTTPS

我有一个Weblogic访问HTTPS服务器的问题,我可以访问其他HTTPSurl,如谷歌或微软。 尝试连接到url的代码是: URL url = new URL(“https://myserver.com”); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(“GET”); connection.setRequestProperty(“User-Agent”, “Mozilla/5.0”); // fails here responseCode = connection.getResponseCode(); 我得到以下堆栈跟踪: java.io.IOException: Connection closed, EOF detected at weblogic.socket.JSSEFilterImpl.handleUnwrapResults(JSSEFilterImpl.java:539) at weblogic.socket.JSSEFilterImpl.unwrapAndHandleResults(JSSEFilterImpl.java:456) at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:80) at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:64) at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:59) at weblogic.socket.JSSEFilterImpl.write(JSSEFilterImpl.java:390) at weblogic.socket.JSSESocket$JSSEOutputStream.write(JSSESocket.java:78) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) at java.io.FilterOutputStream.flush(FilterOutputStream.java:140) at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:186) at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:400) at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37) at weblogic.net.http.HttpURLConnection.getResponseCode(HttpURLConnection.java:1005) […]

尝试进行客户端服务器ssl身份validation时,Tomcat 7获取SSLv2Hello被禁用错误

我试图为客户端和服务器设置自签名TLS配置,其中服务器是Tomcat 7,客户端是Apache httpclient 4.1。 服务器配置取自此处 ,客户端代码取自此处 。 我的tomcat配置如下所示: 我的客户端代码如下所示: final HttpParams httpParams = new BasicHttpParams(); // load the keystore containing the client certificate – keystore type is probably jks or pkcs12 final KeyStore keystore = KeyStore.getInstance(“pkcs12”); FileInputStream keystoreInput = = new FileInputStream(“d:/dev/java/conf/keys/client.p12”);; // TODO get the keystore as an InputStream from somewhere keystore.load(keystoreInput, “password”.toCharArray()); // […]

如何通过Web服务制作“简单SSL”?

我知道如何使用证书保护Web服务。 那是我的客户代码: SSLContext ssl = SSLContext.getInstance(“SSLv3”); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType()); String password = Configuration.getConfig(“keyStorePassword”); store.load(new FileInputStream(new File(Configuration.getConfig(“keyStore”))), password.toCharArray()); kmf.init(store, password.toCharArray()); KeyManager[] keyManagers = new KeyManager[1]; keyManagers = kmf.getKeyManagers(); TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(store); TrustManager[] trustManagers = tmf.getTrustManagers(); ssl.init(keyManagers, trustManagers, new SecureRandom()); HttpsConfigurator configurator = new HttpsConfigurator(ssl); Integer port = Integer.parseInt(Configuration.getConfig(“port”)); HttpsServer […]

SSLHandshakeException:没有共同的密码套件

按照此处的说明重新创建我以前错误创建的证书。 有些东西已经改变,因为我现在看到javax.net.ssl.SSLHandshakeException: no cipher suites in common服务器上javax.net.ssl.SSLHandshakeException: no cipher suites in common和javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure在客户端上javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 。 而不是错误这个问题 服务器是ClassFileServer.java和相应的客户端SSLSocketClientWithClientAuth.java 关于让两端发挥得很好的任何提示,请注意我使用的是localhost所以我认为密码function是相同的。 更新: 以下是我用来生成文件的步骤,我可能会混淆密钥和信任库: 在服务器上( 本指南后面): $ keytool -genkey -alias serverkey -keyalg RSA -keypass p@ssw0rd -storepass p@ssw0rd -keystore keystore.jks $ keytool -export -alias serverkey -storepass p@ssw0rd -file server.cer -keystore keystore.jks $ keytool -import […]

JavaMail中的错误:PKIX路径构建失败,无法找到所请求目标的有效证书路径

我正在尝试在android中构建一个电子邮件客户端应用程序,现在我想配置javaMail部分。 我正在尝试与imap服务器建立连接但我的代码有问题..这是我的代码: package mailpackage; import java.util.Properties; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Store; public class Connection implements Runnable { boolean done; public Connection() { this.done=false; } @Override public void run() { System.out.println(“Hello from Connection Thread!”); while(!done) { String host = “myhost”;// change accordingly String mailStoreType = “imap”; String […]

使用Java编写SSL检查器

有没有人知道有关用Java编写SSL检查器的任何好的教程,网站和书籍? 我正在尝试做可以在这里找到的东西: http : //www.sslshopper.com/ssl-checker.html 。 我不是要创建自签名证书或使用密钥库。 我希望能够到任何站点确定是否存在有效的SSL证书,确定证书上的主机名是否与输入的命名匹配,并确定此证书何时到期。 我已经搜索了这个主题,但“如何使用Java创建SSL购物者”并没有给我任何东西,而我的其他搜索只给我带来了如何创建自签名证书的链接。 任何帮助将不胜感激。

Java密码套件

我正在尝试使用SSLSocketFactory.getSupportedCipherSuites()来确定返回密码套件的顺序 – 它似乎在Java 1.6和Java 1.7之间有所不同。 我认为这很容易确定,但遇到了一些问题。 首先,这是我正在使用的代码: SSLContext context = SSLContext.getDefault(); SSLSocketFactory sf = context.getSocketFactory(); String[] cipherSuites = sf.getSupportedCipherSuites(); 非常直接(如果我做了一些愚蠢的事情,请纠正我)。 所以,我认为(使用eclipse)我可以进入getSupportedCipherSuites()方法,但似乎源代码不是那样做的(这有什么原因吗?)。 我在jsse.jar中找到了这个类,并使用JD-Eclipse对它进行了反编译。 然而,这给了我一个抽象类,我无法看到抽象类的具体实现(我发现可以使用属性“ssl.SocketFactory.provider”设置类,但这还没有在java.security中指定)。 我还无法确定如何使用“javax.net.debug”属性打开登录(这会消失为本机方法)。 有人能指出我哪里错了吗?

公共https网站上的jsse handshake_failure

我已经阅读了一个相关的问题 ,但它似乎没有在我看到失败的同一个地方失败。 我正在尝试一个非常简单的操作: public static void main(String [] argv) { try { URL u = new URL(“https://membership.usairways.com/Login.aspx”); Object o = u.getContent(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 但是在我的Mac和Windows机器上使用Java 6运行时遇到handshake_failure。 其他人一直没有找到证书的问题,但调试日志( -Djavax.net.debug=ssl:handshake )显示找到的证书很好: keyStore是: keyStore类型是:jks keyStore提供者是: init keystore sunX509类型的init keymanager trustStore是:C:\ Program Files(x86)\ Java \ jre6 \ lib […]

如何使Restlet客户端忽略SSL证书问题

我目前正在测试环境中工作,其中服务器具有默认的自签名SSL证书。 我正在使用Restlet 2.1-RC2并实例化客户端资源,如下所示: Client client = new Client(new Context(), Protocol.HTTP); cr = new ClientResource(String.format(itql_endpoint,riQuery)); cr.setNext(client); 并为我的每个电话重复使用客户端。 如何设置客户端以便忽略有问题的证书。