将Putty连接到SSLSocket

时间:2015-02-05 01:56:01

标签: java putty

我要做的是编写一个小的测试程序来侦听SSLSocket并使用PuTTY(在SSH中)连接到它,然后尝试打印我在java端的PuTTY会话中键入的行。我目前面临的问题是握手。看起来sslsocket.startHandshake()没有完成,它只是在那一点等待(我得到一个“javax.net.ssl.SSLHandshakeException:握手时远程主机关闭连接”异常消息,当我杀死PuTTY时)。

以下是我用来创建密钥库的命令:

keytool -genkeypair -keyalg RSA -alias test -keystore ks1.jks -storepass password1 -validity 360 -keysize 1024

代码:

...
char[] keyPassword =  "password1".toCharArray();
FileInputStream keyFile = new FileInputStream("ks1.jks"); 

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(keyFile, keyPassword);

SSLServerSocketFactory sslserversocketfactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
SSLServerSocket sslserversocket = (SSLServerSocket) sslserversocketfactory.createServerSocket(7777);

SSLSocket sslsocket = (SSLSocket) sslserversocket.accept();
sslsocket.startHandshake();

InputStream inputstream = sslsocket.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);

String string = null;
while ((string = bufferedreader.readLine()) != null) {
  System.out.println(">" + string);
  ...
}
...

1 个答案:

答案 0 :(得分:2)

PuTTY不了解SSL。

它支持SSH,什么是完全不同的协议。

PuTTY也支持原始连接,但由于SSL是一种二进制协议,因此几乎不可能键入"键入"控制台上的SSL数据包。