我是一名新的java开发人员,我必须在服务器和客户端之间创建SSL连接(客户端必须发送签名文件)。
关注本教程并在此页面上发帖(如https://stackoverflow.com/a/18790838/2933117或http://stilius.net/java/java_ssl.php),我创建了一个密钥库:keytool -genkey -keystore mySrvKeystore -keyalg RSA
并编写了此代码:
public class Servidor extends Thread {
static int port=2017;
static String serverKeyStore="mySrvKeystore.jks", pwdStore="123456";
public static void main(String[] arstring) {
SSLServerSocket sslserversocket=null;
try {
System.setProperty("javax.net.ssl.keyStore", serverKeyStore);
System.setProperty("javax.net.ssl.keyStorePassword", pwdStore);
SSLServerSocketFactory sslserversocketfactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
sslserversocket = (SSLServerSocket) sslserversocketfactory.createServerSocket(port);
[...]
-
class Cliente {
static int port=2017;
static String serverKeyStore="mySrvKeystore.jks", pwdStore="123456";
public static void main(String[] arstring) {
try {
System.setProperty("javax.net.ssl.trustStore", serverKeyStore);
System.setProperty("javax.net.ssl.trustStorePassword", pwdStore);
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("localhost", port);
现在我的疑惑,实际上我必须使用相同的文件(mySrvKeystore.jks)与Keystore和TruStore使用相同的pwd(“123456”),怎么能给我这个安全的频道?客户可以轻松获得密钥
和...如果客户想要签名,文件必须使用来自trustore的密钥?
提前感谢,对不起我的否定怀疑。