Sey*_*mad 6 java ssl https proxy jsse
我正在用Java编写一个简单的HTTPS代理程序用于教育目的.我的程序在一个端口(比如7443)上侦听来自浏览器(比如Firefox)的传入HTTPS请求,解析请求并将其转发到所需的目的地(比如https://www.comodo.com).
Firefox的代理设置设置为使用我的端口进行SSL连接(127.0.0.1 : 7443).
我的代码简短而简单:
static // initializer
{
System.setProperty("javax.net.ssl.keyStore", "MyKeyStore");
System.setProperty("javax.net.ssl.keyStorePassword", "password");
}
SSLServerSocketFactory ssFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
try {
SSLServerSocket listener = (SSLServerSocket) ssFactory.createServerSocket(port, 64);
listener.setUseClientMode(false);
listener.setWantClientAuth(false);
listener.setNeedClientAuth(false);
SSLSocket connection = (SSLSocket) listener.accept();
browser.startHandshake(); /* <<== Exception throws at this line */
} catch (IOException ex) {
ex.printStackTrace(System.err);
}
Run Code Online (Sandbox Code Playgroud)
但是我抓住了以下异常:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
Run Code Online (Sandbox Code Playgroud)
例外情况表明连接可以是纯文本,但只有来自Firefox的HTTPS连接设置为使用此端口.我已经记录了Firefox发送到我的应用程序的内容,这是:
CONNECT www.comodo.com:443 HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0
Proxy-Connection: keep-alive
Connection: keep-alive
Host: www.comodo.com
Run Code Online (Sandbox Code Playgroud)
Firefox正在谈论palin-text,我认为CONNECT是SOCKS命令(我不确定),我没有在Firefox的SOCKS设置中设置任何内容.以下是Firefox代理设置的屏幕截图:

我在这里错过了什么?!我需要做些什么来使用Firefox或任何其他浏览器?
对于那些认为这是另一个问题的副本并且已经在另一个问题中得到回答的人我不得不说:是的,这两个问题都源于类似的问题,但引用问题中的唯一答案是指导使用SSL套接字.结果是误导,导致了这个新问题.因此,虽然它们针对的是类似的问题,但这个问题显示出解决问题的完全不同但又误导的路径,因此它可以为面临这样一个问题的未来人提供有用的指导.
| 归档时间: |
|
| 查看次数: |
4686 次 |
| 最近记录: |