Tag: 握手

Bouncy castle提供未知的HashAlgorithm

我正在尝试使用充气城堡进行DTLS Handshake 。 我通过以下链接生成密钥。 我正在通过扩展DefaultTlsClient来工作。 它可以生成client_hello数据包。 但是当server_hello数据包到达时,它会给出org.bouncycastle.crypto.tls.TlsFatalAlert: internal_error(80)引起: java.lang.IllegalArgumentException: unknown HashAlgorithm 。 任何人都可以提供任何暗示吗? 更新: 来自Wireshark:在证书请求中,有9个签名哈希算法。 其中一个是rsa_pss_sha256(0x0804) 。 在public static Digest createHash(short hashAlgorithm)的public static Digest createHash(short hashAlgorithm)函数中没有匹配它。 这就是它给出Unknown hash算法的原因。 那是什么意思? 使用Bouncy Castle,是否可以使用该服务器建立DTLS? 以下是加载密钥库的代码: public static void initKeyStore() { char password[] = “bbtone”.toCharArray(); if( !isKeystoreLoaded) { try { FileInputStream fis = new FileInputStream(“bbtone”); KeyMgmt key = new […]

确定Java中TLS握手的Diffie-Hellman“参数”长度

我想与服务器建立HTTPS连接,如果我使用非短暂的DH密钥交换,我想知道该连接的参数是什么。 实际上,我并不关心它是否是短暂的。 我正在寻找的是能够建立连接,然后警告连接是否使用“弱”DH参数。 这是我可以在连接时检查的东西吗? 或者是由密码套件本身定义的DH参数集(或者更具体地说,这些参数的长度 ,以位为单位)? 例如,Qualys社区线程有一个SSLLabs认为“弱”的密码套件的图示(好吧,每个人都认为它们很弱……他们只是有一个抱怨它们的公共工具): https://community.qualys。 COM /线程/ 14821 他们特别提到例如TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 ,它是密码套件0x9f并提及DH参数。 这些参数的参数是否被加密到密码套件中(意味着它们总是 1024位),或者这是服务器的配置,由于特定的DH参数选择,使得这些密码套件变弱了? 在任何一种情况下,如果可能的话,我希望能够从连接中嗅出该信息。 有谁知道这是否可以做到,以及如何做? 我已经编写了一些代码来尝试获取有关握手的信息,但是我一直在为我希望包含这些数据的对象获取null 。 SSLSocketFactory sf = …; Socket sock = new Socket(); sock.connect(address, timeout); SSLSocket socket = (SSLSocket)sf.createSocket(sock, host, port, true); socket.startHandshake(); SSLSession sess = socket.getHandshakeSession(); 我希望此时的sess包含一些关于握手的有趣信息,但它是null 。 startHandshake的javadoc表示它将在握手完成时通知事件侦听器。 所以我尝试了这个: SSLSocketFactory sf = …; Socket sock = new Socket(); […]

Java服务器自签名证书+客户端证书和SSL – 连接重置

(我已经问过类似的问题了 ,事实certificate我的客户端密钥没有被加载,但我只有一个例外,所以我发布了另一个问题。) 我正在连接到成功之前使用的Web服务,但现在他们已经更改了主机名并向我发送了两个.pem文件; 一个是CA,另一个是我的新客户证书。 (我正在使用Java 1.5,Spring + Spring Web Services和Apache httpclient,但我怀疑我的问题是证书,密钥和SSL本身。) 我已经导入了两个.pem文件,以及我从Firefox导出到我的cacerts的主机.crt。 但是,由于我遇到这个exception,我显然做错了什么: org.springframework.ws.client.WebServiceIOException: I/O error: Connection reset; nested exception is java.net.SocketException: Connection reset Caused by: java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:168) at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:284) at com.sun.net.ssl.internal.ssl.InputRecord.readV3Record(InputRecord.java:396) at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:348) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:720) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1025) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:619) at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:502) at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1973) at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993) […]

Websocket握手在Java中失败

所以,我正在尝试解析一个使用websocket向客户端发送数据的网站。 从我读过的内容: 链接1 链接2 我知道,为了创建连接,我需要向服务器发送一个特殊的http请求,然后我将检索一些用于访问该通道的数据。 我做了什么: 创建了http请求 `URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); // optional default is GET con.setRequestMethod(“GET”); //add request header con.setRequestProperty(“Cache-Control”, “no-cache”); con.setRequestProperty(“Host”, “www.example.com”); con.setRequestProperty(“Upgrade”, “websocket”); con.setRequestProperty(“Connection”, “upgrade”); con.setRequestProperty(“Origin”, “https://example.com”); con.setRequestProperty(“Sec-WebSocket-Extensions”, “x-webkit-deflate-frame”); con.setRequestProperty(“Sec-WebSocket-Key”, “QkWkChtTGpaZL5PkOMaRtg==”); con.setRequestProperty(“Sec-WebSocket-Version”, “13”); con.setRequestProperty(“User-Agent”, “Mozilla/..; ` 我用代码200(不应该是101)读取响应。 问题: 我如何生成Sec-Websocket-Key? (例如从firebug中获取,实际上所有头文件) 1.1。 还有什么可以做的? 1.2。 必须使用http中的相同链接来访问websocket? 只用wss而不是https? 在此之后,我尝试将客户端连接到服务器并在onMessage方法中接收消息。 […]

为什么我会出现握手失败(Java SSL)

我正在通过HTTPS连接到Web服务。 我已经完成了我认为使其工作所需的所有内容,但最终我得到了握手失败。 我发现作为一个新用户,我不能发布超过2个链接,因为“垃圾邮件保护” – 比很多堆栈溢出…无论如何这里是一个链接到一个所有链接拼写的pastebinpost…所以当我在这里写了“链接#1”,它是对这些链接的引用: http : //pastebin.com/y4zGNRC7 我使用HttpClient(服务URL上的GET)validation了相同的行为,并实际通过CXF代理调用Web服务 我正在设置密钥库和信任库 – 我尝试了“in code”方式(链接#1)和设置系统属性 – 即System.setProperty(“javax.net.ssl.keyStore”,“mykeystore.jks” ); SSL调试已启用(javax.net.debug = all) SSL调试脱口而出密钥库和信任库的内容(即看起来像java“了解它们”) – 链接#2 似乎有一些客户端 – 服务器通信正在进行,但随后由于某种原因链接#3崩溃 我在浏览器(Chrome)中使用客户端和CA证书并使用openssl s_client成功连接到服务器 wireshark显示较少的客户端 – 服务器通话来自java(链接#4),然后例如来自Chrome(链接#5) 另一个奇怪的事情是,当我设置密钥库时我似乎得到了相同的行为,而当我没有设置密钥库时(唯一的区别是当我在控制台中打印密钥库内容时,但就是这样)。 我试过谷歌搜索问题,我在stackoverflow上看到了很多类似的post,但没有任何帮助。 我尝试更改协议版本(“TLSv1”,“SSLv3”,甚至是奇怪的v2 Hello)。 任何帮助将不胜感激 – 也许我可能忽略了一些基本的东西…我在这里绝望… Thanx PS我在Fedora Core 15(64位)上运行java 1.6 update 30

Java 7(充当客户端)使用在Java 6中工作的密钥库和信任库的SSL握手失败

我正在进行JBoss AS 5.1到7.4以及Java 6到7的迁移,并且获得握手失败。 密钥库和信任库是我们在Java 6中成功使用的密钥库和信任库。 我已经写了一些测试来缩小问题范围,它绝对不是JBoss,而是Java 7。 启用S​​SL日志记录后,我明白了: 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) %% Invalidated: [Session-2, SSL_RSA_WITH_RC4_128_SHA] 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) http-/192.168.147.20:8080-120, SEND TLSv1 ALERT: fatal, description = certificate_unknown 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) http-/192.168.147.20:8080-120, WRITE: TLSv1 Alert, length = 2 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) http-/192.168.147.20:8080-120, called closeSocket() 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) http-/192.168.147.20:8080-120, handling exception: javax.net.ssl.SSLHandshakeException: […]

Android developpement,Gottox socket.io-java-client:file not fount Exception /socket.io/1/

这是我的问题: 我一直在尝试使用socket.io-java-client作为Android应用程序,但我最终会出现握手错误(见下文)。 这是我的应用程序源代码: public void runIO(){ try { SocketIO socket = new SocketIO(“http://192.168.1.60:1337”); socket.connect(new IOCallback() { @Override public void onMessage(JSONObject json, IOAcknowledge ack) { try { System.out.println(“Server said:” + json.toString(2)); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onMessage(String data, IOAcknowledge ack) { System.out.println(“Server said: ” + data); } @Override public void […]