【发布时间】:2012-01-27 00:22:49
【问题描述】:
我们需要使用 AES 加密进行客户端服务器通信,所以当我在 SSLServetSocket(使用 Java 6)上启用密码套件 TLS_DHE_RSA_WITH_AES_128_CBC_SHA 并运行程序时,我遇到了异常
没有可用的证书或密钥对应于已启用的 SSL 密码套件
我的问题是我们能否通过 SSLSocket 进行 AES 加密,或者它需要是常规套接字。如果我们不能使用它,任何人都可以提供一个使用 AES 加密的客户端服务器通信示例。
这里是代码
public class AESServerSocketTest {
public static void main(String[] args) {
SSLServerSocket serverSocket;
try
{
SSLContext ctx = javax.net.ssl.SSLContext.getDefault();
serverSocket =(SSLServerSocket)ctx.getServerSocketFactory().createServerSocket(8181);
serverSocket.setEnabledCipherSuites(new String[]{"TLS_DHE_RSA_WITH_AES_128_CBC_SHA"});
SSLSocket in = (SSLSocket)serverSocket.accept();
}
catch (Exception e)
{
System.out.println("Exception " + e);
}
}
}
提前致谢
【问题讨论】:
-
您是如何配置您的证书/密钥库的?它是否至少在不设置任何特定密码套件的情况下工作?
-
当我将它设置为匿名密码套件时它可以工作。我没有向密钥库添加任何证书/密钥,因为 AES 使用对称密钥进行加密和解密,我们需要添加吗?如果是,我们如何与客户分享。