java将油灰连接到SSLSocket
我要做的是编写一个小的测试程序来监听SSLSocket,并使用PuTTY(SSH)连接到它,然后尝试打印我在java端的PuTTY会话中键入的行。我目前面临的问题是握手。看起来像sslsocket。startHandshake()未完成,它正在等待(我在杀死PuTTY时收到“javax.net.ssl.SSLHandshakeException:Remote host closed connection during handshake”异常消息)
以下是用于创建密钥存储的命令:
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 楼答案
PuTTY不知道SSL
它支持SSH,这是一个完全不同的协议
PuTTY还支持原始连接,但由于SSL是一种二进制协议,因此几乎不可能在控制台上“键入”SSL数据包