OpenSSL

OpenSSL

原文:http://mengzhuo.org/blog/openssl-%e7%ac%94%e8%ae%b0.html

2014-11-17

准备知识
  • 私钥/公钥签名算法 之后要说的RSA、ECC(椭圆曲线加密算法)都是其中的一种。
  • 迪菲-赫尔曼密钥交换 简写就是DH
  • ECDH 椭圆曲线DH 使用椭圆曲线签名算法用来进行密钥交换
  • SHA 1-N 、MD5 都是摘要算法,运算出的值进行校验
  • AES DES 3DES RC4 都是加密算法,用来加密传输用的数据

所以ECDH-ECDSA-AES256-GCM-SHA384 意思是:

使用ECDH协议交换以ECDSA为加密算法的公钥,
AES256-GCM加密算法加密传输数据
SHA算法384位强度进行校验

证书制作流程

一般流程是:

  1. 生成自己的私钥
  2. 用私钥生成csr(Certificate Signing Request 验证签名申请)
  3. 将csr提交CA(Certificate authority 验证管理局)
  4. CA发回一个crt(Certificate 验证文件)
  5. 将CA发回的crt和CA公开的crt进行叠加(先后顺序不能颠倒)
  6. 在应用程序中设置keyfile为自己的私钥
  7. 在应用程序中设置certfile为叠加后的crt文件

                              +-----+       +-----+
                              | You |       | CA  |
                              +-----+       +-----+
-------------------------------\ |             |
| Generate private key and CSR |-|             |
|------------------------------| |             |
                                 |             |
                                 | give CSR    |
                                 |------------>|
                                 |             | ------------\
                                 |             |-| check CSR |
                                 |             | |-----------|
                                 |             |
                                 |    give CRT |
                                 |< ------------|
-------------------------------\ |             |
| Set your CRT and private key |-|             |
|------------------------------| |             |
                                 |             |

自签名流程:

  1. 生成自己的私钥
  2. 用自己的私钥生成CA crt
  3. 如果需要自签署其他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 [想要的天数]
Comments are closed.