【问题标题】:TCP Proxy SSL/HTTPS using Java使用 Java 的 TCP 代理 SSL/HTTPS
【发布时间】:2018-02-19 17:29:45
【问题描述】:

我正在尝试使用 Java 创建我自己的代理。我不是最擅长这种网络的东西,所以当我看起来很愚蠢时请考虑一下。

无论如何描述我的问题:我正在运行一个简单的 java Socket-Server,并将其注册为 Firefox 中的代理。代理本身可以毫无问题地与 HTTP-Server 一起使用。如果我尝试使用 HTTPS 服务器,Firefox 会给我以下错误: "SSL_ERROR_RX_RECORD_TOO_LONG" 我知道SSL/TSL 是用于对传输的数据进行解码和编码的协议。令我恼火的是,如果我尝试读取作为答案收到的字节数组,它会显示为字符串,它会向我显示解码的 HTML 代码。

点此查看代码:https://hastebin.com/muyusalopu.java

有人可以向我解释一下确切的问题是什么以及如何解决它吗?

【问题讨论】:

    标签: java https tcp proxy


    【解决方案1】:

    这里让我恼火的是,如果我尝试读取字节数组, 我收到了一个答案,作为一个字符串,它向我显示了解码的 HTML 代码。

    这是您正在使用的 String 类的构造函数的定义

    字符串(字节[]字节)

    通过使用平台的默认字符集解码指定的字节数组来构造一个新的字符串。

    为什么没有加密?

    因为你正在使用 urlConnection,如果你想加密,那么你应该使用 httpsUrlConnection 类

    【讨论】:

    • 我的意思是,我从 https 网站收到的数据无需任何额外解密即可读取
    • 好的,谢谢你 :) 但主要问题仍然存在 :(
    • 在 https: URL 上使用URL.openConnection()(自动)使用HttpsURLConnection,它是URLConnection 的子类(因此可分配给)。确切地说,目前它使用sun.net.www.protocol.https.HttpsURLConnectionImpl,它是HttpsURLConnection 的子类,但它没有记录,可能会改变。
    猜你喜欢
    • 1970-01-01
    • 2011-05-22
    • 2019-09-29
    • 2018-12-01
    • 2018-08-13
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多