如何创建用于SSLServerSocket
/ SSLSocket
的临时专用密钥和证书(如WebRTC的DTLS)。
它不应位于KeyStore中,并且私钥字节应可由代码访问(通过另一个安全连接进行序列化/反序列化)。
最佳答案
您可以看看
Eclipse/Californium - ECDHE cryptography
只需提一下:
ECDHE与提供身份验证无关,而与提供Perfect Forward Secrecy有关。因此,使用两个随机密钥和临时密钥对来加密握手中的密钥交换,这种方式是在销毁这些临时密钥之后无法解密。即使将长期凭证作为x.509证书的私钥,也可以访问。
它通常与ECDSA或PSK等机制一起使用,以额外地确保身份验证。
import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.spec.ECGenParameterSpec;
try {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC");
keyPairGenerator.initialize(new ECGenParameterSpec("secp256r1"));
KeyPair keyPair = keyPairGenerator.generateKeyPair();
} catch (GeneralSecurityException ex) {
}