如何创建用于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) {
}

09-26 08:51