前言
对于 ECDH,Wikipedia 如下描述:
Elliptic curve Diffie–Hellman (ECDH) is an anonymous key agreement protocol that allows two parties, each having an elliptic curve public–private key pair, to establish a shared secret over an insecure channel.
ECDH 是基于 ECC(Elliptic Curve Cryptosystems,椭圆曲线密码体制)的 DH( Diffie-Hellman)密钥交换算法。交换双方可以在不共享任何秘密的情况下协商出一个密钥。与 Diffie-Hellman 相比 ECDH 具有 ECC 的高强度、短密钥长度、计算速度快等优点。
由于 ECDH 每次用一个固定的 DH key, 导致不能向前保密(forward secrecy),安全性会降低,所以一般都是用 ECDHE(ECDH 的 ephemeral version)或其他版本的 ECDH 算法。
本文只对 ECDH 进行介绍,只为测试。
环境说明
CentOS 7.2(CentOS_7_x86_64_1151)
OpenSSL 1.0.2e
安装 OpenSSL
1.查看本机安装的版本
#openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
2.OpenSSL 应在1.0.2以上,这里使用 1.0.2e,去官网下载,源码安装一下,请根据实际情况更改下载地址。
#cd /usr/src
#wget https://www.openssl.org/source/openssl-1.0.2e.tar.gz
#tar -zxf openssl-1.0.2e.tar.gz
3.编译安装 OpenSSL
#cdopenssl-1.0.2e
#./config
#make
#make test
#make install
4.如果旧版本还在,可以先备份,并修改一个
#mv /usr/bin/openssl /root/
#ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
5.查看版本
# openssl version
OpenSSL 1.0.2e 3 Dec 2015
制作CA证书
ECDH 密钥交换算法,不能自签名,所以制作证书,需要一个 CA 进行颁发。
CA 要给别