售前咨询
技术支持
渠道合作

图解SSL加密和解密原理

1.SSL原理

Secure Sockets Layer(安全的套接字层)位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。用于保障在Internet上数据传输之安全,利用数据加密技术,可确保数据在网络上之传输过程中不会被截取及窃听。

2.SSL的会话过程

SSL会话主要分为三步:

1.客户端向服务器端索要并验正证书;

2.双方协商生成“会话密钥”;对成密钥

3.双方采用“会话密钥”进行加密通信;

 

 

3.加密算法和协议

 

3.1 对称加密

加密和解密使用同一个密钥

常见的加密算法:

DES、3DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5

特性:

1、加密、解密使用同一个密钥;

2、将原始数据分割成为固定大小的块,逐个进行加密;

缺陷:

1、密钥过多;

2、密钥分发困难;

3.2 公钥加密

密钥分为公钥与私钥

公钥:从私钥中提取产生;可公开给所有人;

私钥:通过工具创建,使用者自己留存,必须保证其私密性;

特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;

用途:

数字签名:主要在于让接收方确认发送方的身份;

密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;

数据加密:

3.3 单向加密

提取数据指纹(特征码);只能加密,不能解密;

常见算法:md5、sha1

特性:定长输出、雪崩效应;

功能:完整性;

3.4 密钥交换

IKE(Internet Key Exchange互联网密钥交换)

1.公钥加密

2.DH(Deffie-Hellman地狱男爵)

4.PKI

PKI是Public Key Infrastructure的首字母缩写,翻译过来是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范

公钥基础设施主要包含以下四个:

签证机构:CA

注册机构:RA

证书吊销列表:CRL

证书存取库

5.openssl命令

openssl有众多子命令,基本可分为三类:

1.标准命令

2.消息摘要命令(dgst子命令)

3.加密命令(enc子命令)

5.1 对称加密

加密:~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext

解密:~]# openssl enc -d -des3 -a -salt -out fstab -in fstab.ciphertext

5.2 单向加密

~]# openssl dgst -md5 /PATH/TO/SOMEFILE

5.3 生成用户密码

~]# openssl passwd -1 -salt $(openssl rand -hex 5)

5.4 生成随机数

~]# openssl rand -hex NUM

~]# openssl rand -base64 NUM

5.5 公钥加密

生成私钥:~]# (umask 077; openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS)

提取公钥:~]# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout

6.构建私有CA

1.在CA的服务器上生成私钥

[root@ch sysroot]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

2.生成自签证书

[root@ch sysroot]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:Beijing

Locality Name (eg, city) [Default City]:Beijing

Organization Name (eg, company) [Default Company Ltd]:CH

Organizational Unit Name (eg, section) []:Ops

Common Name (eg, your name or your server’s hostname) []:ch

Email Address []:

3.为CA提供所需的目录及文件

[root@ch sysroot]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}

[root@ch sysroot]# touch /etc/pki/CA/{serial,index.txt}

[root@ch sysroot]# echo 01 > /etc/pki/CA/serial

以上步骤是在CA服务器端操作

http服务器向CA请求签署证书

a.主机生成私钥

[root@trustauth.cn ~]# mkdir /etc/httpd/ssl

[root@trustauth.cn ~]# cd /etc/httpd/ssl

[root@trustauth.cn ssl]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 1028)

b.生成证书签署请求

[root@trustauth.cn ssl]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:Beijing

Locality Name (eg, city) [Default City]:Beijing

Organization Name (eg, company) [Default Company Ltd]:CH

Organizational Unit Name (eg, section) []:Ops

Common Name (eg, your name or your server’s hostname) []:trustauth.cn

Email Address []:

Please enter the following ‘extra’ attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

c.将请求通过可靠方式发送给CA服务器

[root@trustauth.cn ssl]# scp httpd.csr root@172.18.20.4:/tmp/

以上操作是在http服务器端操作

4.在CA主机上签署证书

[root@ch tmp]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

Certificate Details:

Serial Number: 1 (0x1)

Validity

Not Before: Mar 26 04:17:02 2016 GMT

Not After : Mar 26 04:17:02 2017 GMT

Subject:

countryName = CN

stateOrProvinceName = Beijing

organizationName = CH

organizationalUnitName = Ops

commonName = trustauth.cn

Certificate is to be certified until Mar 26 04:17:02 2017 GMT (365 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n] y

Write out database with 1 new entries

Data Base Updated

5.查看证书中的信息

[root@ch tmp]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject

serial=01

subject= /C=CN/ST=Beijing/O=CH/OU=Ops/CN=trustauth.cn

如果http服务的私钥丢了,这个时候我们需要吊销证书

(a).客户端获取要吊销的证书的serial

[root@trustauth.cn ssl]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject

serial=01

subject= /C=CN/ST=Beijing/O=CH/OU=Ops/CN=CH

(2).CA服务器根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致

[root@ch tmp]# cd /etc/pki/CA/

[root@ch CA]# cat index.txt

V 170326041702Z 01 unknown /C=CN/ST=Beijing/O=CH/OU=Ops/CN=trustauth.cn

(3).CA服务器吊销证书

[root@ch CA]# openssl ca -revoke /etc/pki/CA/newcerts/01.pem

Using configuration from /etc/pki/tls/openssl.cnf

Revoking Certificate 01.

Data Base Updated

(4).生成吊销证书的吊销编号(仅在次吊销证书时执行)

[root@ch CA]# echo 01 > /etc/pki/CA/crlnumber

(5).更新证书吊销列表

[root@ch CA]# openssl ca -gencrl -out /etc/pki/CA/httpd.crl

查看crl文件

[root@ch CA]# openssl crl -in httpd.crl -noout -text

 

 

上一篇:

下一篇:

相关新闻

 

领取优惠
免费预约

申请试用SSL证书

提交成功!

咨询客服