准备知识
- 私钥/公钥签名算法 之后要说的RSA、ECC(椭圆曲线加密算法)都是其中的一种。
- 迪菲-赫尔曼密钥交换 简写就是DH
- ECDH 椭圆曲线DH 使用椭圆曲线签名算法用来进行密钥交换
- SHA 1-N 、MD5 都是摘要算法,运算出的值进行校验
- AES DES 3DES RC4 都是加密算法,用来加密传输用的数据
所以ECDH-ECDSA-AES256-GCM-SHA384 意思是: 使用ECDH协议交换以ECDSA为加密算法的公钥,
AES256-GCM加密算法加密传输数据 SHA算法384位强度进行校验
证书制作流程
一般流程是:
- 生成自己的私钥
- 用私钥生成csr(Certificate Signing Request 验证签名申请)
- 将csr提交CA(Certificate authority 验证管理局)
- CA发回一个crt(Certificate 验证文件)
- 将CA发回的crt和CA公开的crt进行叠加(先后顺序不能颠倒)
- 在应用程序中设置keyfile为自己的私钥
- 在应用程序中设置certfile为叠加后的crt文件
+-----+ +-----+
| You | | CA |
+-----+ +-----+
-------------------------------\ | |
| Generate private key and CSR |-| |
|------------------------------| | |
| |
| give CSR |
|------------>|
| | ------------\
| |-| check CSR |
| | |-----------|
| |
| give CRT |
|< ------------|
-------------------------------\ | |
| Set your CRT and private key |-| |
|------------------------------| | |
| |
自签名流程:
- 生成自己的私钥
- 用自己的私钥生成CA crt
- 如果需要自签署其他csr,需要执行命令
命令cheatsheat
生成RSA私钥:
openssl genrsa -out myrsa.key 2048
解释: genrsa (generate rsa), 2048是位数 生成ECC私钥:
openssl ecparam -name secp256k1 -genkey -noout -out myecdsa.private.key
解释: secp256k1是曲线的名称 可以用openssl ecparam -list_curves
找想要的曲线 生成csr文件:
openssl req -new -sha256 -key [私钥地址] -out [想要csr的地址]
解释: sha256是之前说的摘要算法,默认的sha1已经不再安全了 生成自签名crt文件:
openssl req -new -nodes -x509 -key [私钥地址] -out [想要的crt的地址] -days [想要的天数]
自签名csr文件:
openssl x509 -req -in [CSR地址] -signkey [签署用的私钥] -out [想要的CRT地址] -days [想要的天数]
验证签名文件信息:
openssl x509 -in [CRT文件] -text -noout