SSL

SSL即安全套接字协议(Secure Sockets Layer),是为网络通信提供安全及数据完整性的一种安全协议。SSL在传输层与应用层之间对网络连接进行加密。
使用SSL有很多好处:认证用户和服务器,确保数据发送到正确的客户机和服务器;加密数据以防止数据中途被窃取;维护数据的完整性,确保数据在传输过程中不被改变。作为一款优秀的产品,SSL功能是必不可少的。

理解数字证书的概念

数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。

最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA(例如中国各地方的CA公司)中心签发的证书,也可以由企业级CA系统进行签发。
一般证书分有三类,根证书、服务器证书和客户端证书。根证书,是生成服务器证书和客户端证书的基础,是信任的源头,也可以叫自签发证书,即CA证书。服务器证书,由根证书签发,配置在服务器上的证书。客户端证书,由根证书签发,配置在服务器上,并发送给客户,让客户安装在浏览器里的证书。
在了解SSL的时候可能会遇到很多名词概念,如

  • 对称加密:例如平时给文件加密,加密和解密用的同一密码,即对称加密。
  • 非对称加密:加密时用一个密码,而解锁时需要用另一个密码,即非对称加密。目前很流行的非对称加密算法是RSA算法,它是基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
  • 公钥:公钥是公开的,用来传输对方的随机密钥,只有通过私钥才能解密,这时就只有双方知道密钥了,从而达到安全传输的目的。
  • 私钥:自己保留,只有通过私钥才能解密公钥加密的数据,对于私钥的使用可以设置密码。

通信过程

下面以最常见的单向认证为例,简述一下通信过程:

①客户端向服务器发送请求

②服务器将包含公钥的证书通过明文发送给客户端

③客户端通过根证书验证服务器证书是否有效

④如果有效,客户端生成一个随机密钥,也叫对称加密密钥使用服务器的公钥进行加密传输

⑤服务器通过私钥解密客户端传输的对称加密密钥

⑥这时只有服务器和客户端知道这个对称加密密钥,双方可以进行对称加密传输

利用openssl version -a来查看当前openssl版本

prime 检查一个数是否是素数


参数说明:
openssl prime [-hex] [-generate] [-bits bit] [-safe] [-check arg]

  • -hex:输入的数据为16进制。

  • -generate:是否是产生一个素数。

  • -bits bit:产生的素数的位数。

  • -safe:产生的大数是否是安全的。

  • -check arg:需要检查的数。
    输入openssl,再使用 prime -help查看功能

openssl ecparam [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-out filename] [-noout] [-text] [-C] [-check] [-name arg] [-list_curve] [-conv_form arg] [-param_enc arg] [-no_seed] [-rand file(s)] [-genkey] [-engine id]

-list_curves:打印所有可用的算法曲线

-genkey:生成密钥

-name:使用指定的算法曲线

-out:输出文件

使用 secp256k1 作为算法曲线,生成 EC 参数和私钥,并输出到 ca-key_.key 文件中
openssl ecparam -genkey -name secp256k1 -out ca-key_.key

-out file:结果输入到file中
num:随机数长度

req

openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa:bits][-newkey alg:file] [-nodes] [-key filename] [-keyform PEM|DER] [-keyout filename] [-keygen_engine id] [-[digest]] [-config filename] [-subj arg] [-multivalue-rdn] [-x509] [-days n] [-set_serial n][-asn1-kludge] [-no-asn1-kludge] [-newhdr] [-extensions section] [-reqexts section] [-utf8] [-nameopt] [-reqopt] [-subject] [-subj arg] [-batch] [-verbose] [-engine id]

参考博客:http://www.wjhsh.net/you-knows-p-13811723.html

原文链接:https://blog.csdn.net/qq_36973838/article/details/107672821