如何在Android中生成临时TLS密钥和证书(不使用KeyStore)

时间:2019-10-08 21:53:35

标签: android ssl

如何创建用于SSLServerSocket / SSLSocket的临时私钥和证书(如WebRTC的DTLS一样)。

它不应位于KeyStore中,并且私钥字节应可由代码访问(通过另一个安全连接进行序列化/反序列化)。

1 个答案:

答案 0 :(得分:1)

您可以看看

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) {
}