图解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的服务器上生成私钥

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

2.生成自签证书

[[email protected] 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提供所需的目录及文件

[[email protected] sysroot]# mkdir  -pv  /etc/pki/CA/{certs,crl,newcerts}
[[email protected] sysroot]# touch  /etc/pki/CA/{serial,index.txt}
[[email protected] sysroot]# echo  01 > /etc/pki/CA/serial

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



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

a.主机生成私钥

[[email protected] ~]# mkdir /etc/httpd/ssl
[[email protected] ~]# cd /etc/httpd/ssl
[[email protected] ssl]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 1028)

b.生成证书签署请求

[[email protected] 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) []:www.test.com   
Email Address []:

Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

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

[[email protected] ssl]# scp httpd.csr [email protected]:/tmp/

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



4.在CA主机上签署证书

[[email protected] 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                = www.test.com

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.查看证书中的信息

[[email protected] 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=www.test.com


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


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

[[email protected] 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中存储的是否一致

[[email protected] tmp]# cd /etc/pki/CA/
[[email protected] CA]# cat index.txt
V	170326041702Z	01	unknown	/C=CN/ST=Beijing/O=CH/OU=Ops/CN=www.test.com

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

[[email protected] 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).生成吊销证书的吊销编号(仅在第一次吊销证书时执行)

[[email protected] CA]#  echo  01  > /etc/pki/CA/crlnumber


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

[[email protected] CA]# openssl ca -gencrl -out /etc/pki/CA/httpd.crl

查看crl文件

[[email protected] CA]# openssl crl -in httpd.crl -noout  -text
时间: 2024-09-30 11:33:00

图解SSL和加密解密的相关文章

SSL加密解密基础

SSL简介: SSL是Secure Socket Layer(安全套接字层)的简写,显而易见,它是为了数据传输安全而发明的一种安全协议,并且是在传输层进行网络加密的一种协议. 信息安全的目标有: 保密性 完整性 可用性 为实现这三个目标的手段有: 技术层面:加密解密 服务层面:用于抵制攻击的服务. 加密解密技术: 1.对称加密:将数据分隔成固定大小的块来分别加密,并且加密和解密使用同一个秘钥的加密技术. 用途:加密大数据文件 常用的对称加密算法有: DES:Data Encryption Sta

linux加密解密基础、PKI及SSL、创建私有CA

1.加密解密基础:          数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改.          (2)数据的机密性:防止文件数据泄漏给未授权用户从而让其利用          (3)数据的可用性:保证授权用户能按需访问存取文件数据 2.常见的加密技术: 对称加密  公钥加密  单向加密          (1)对称加密:加密解密使用同一个密钥,将原始数据分割成固定大小的块,逐个进行加密 加密算法:               

加密解密过程

1,首先来说说有关加密解密有关的信息 信息安全标准NIST(National Institute of Standards and Technology)美国国家标准与技术研究院 openssl有CIA C:保密性: 数据保密性 隐私性 A:完整性: 数据完整性 系统完整性 I:可用性 真实性:一个实体是真实的,可被验证的. 可追溯性:一旦被攻击,能够追溯攻击源在哪 2,OSI规定的X.800 1)安全攻击: 被动攻击:窃听 主动攻击:1,伪装 2,重播 3,消息修改 4,拒绝攻击等 2)安全服

openssl 加密 解密 应用及CA的实现

一 现在的加密/解密技术主要有三种:对称加密,公钥加密,和单向加密 对称加密:指的是加密方和解密方使用的是同一个密钥 特性: 1 加密.解密使用同一个秘钥: 2 将原始数据分割成固定大小的块,逐个进行加密 算法:DES  3DES  AES 公钥加密:秘钥是成对出现 公钥:公开给所有人: pubkey 私钥:自己留存,必须保证去私密性:secret key 特点:用公钥加密的数据只能用与之配对的私钥解密,反之亦然: 特性: 数字签名:用于接收方确认发送方的身份 秘钥交换:发送方用对方的公钥加密一

图解SSL/TLS协议(HTTPS的安全层)

http://blog.csdn.net/wallezhe/article/details/50977337 图解SSL/TLS协议 作者: 阮一峰 日期: 2014年9月20日 本周,CloudFlare宣布,开始提供Keyless服务,即你把网站放到它们的CDN上,不用提供自己的私钥,也能使用SSL加密链接. 我看了CloudFlare的说明(这里和这里),突然意识到这是绝好的例子,可以用来说明SSL/TLS协议的运行机制.它配有插图,很容易看懂. 下面,我就用这些图片作为例子,配合我半年前

加密解密

在现代密码学中,加密方法大致可分为对称密钥加密(对称加密)和公开密钥加密(非对称加密). 一. 对称加密(Symmetric-key algorithm,或对等加密: Reciprocal cipher ) 对称加密,即加密和解密使用同一个密钥,或者知道一方密钥能够轻易计算出另一方密钥.其解密(decryption)算法等同于加密算法,也就是说,要还原对等加密的密文,套用加密同样的算法即可得到明文. 对称加密的速度比非对称加密快很多,在很多场合都需要对称加密. 对称加密又可分为分组密码(分组加密

非对称技术栈实现AES加密解密

非对称技术栈实现AES加密解密 正如前面的一篇文章所述,https协议的SSL层是实现在传输层之上,应用层之下,也就是说在应用层上看到的请求还是明码的,对于某些场景下要求这些http请求参数是非可读的,这就要求在前端和后端不同的技术栈上完成信息的加密解密.当然我们通常完成这样专业的功能都会考虑使用相应的框架或者程序库来完成功能,前端或者NodeJS平台通常是JavaScript语言,JavaScript主流的加密解密库分别是SjclJS和CryptoJS, 本文以CryptoJS为例进行讨论.另

加密/解密&利用OpenSSL构建私有CA

在互联网安全及个人隐私状况日益严峻的今天,加密技术变得尤为重要并且不可或缺.在密码雪中,加密是指将明文信息隐匿起来,使之在缺少特殊信息时不可读.本文所讲的主要是在互联网传输数据时所用的加密方式.我们都知道OSI&TCP/IP网络参考模型,通常我们会把这两个模型分为通信子网和资源子网两部分,但是在构建网络的初期,信息从发送端送达到接受端都非常困难所以在设计模型之初并没有考虑过多的安全因素,以至于通信子网和资源子网都没有涉及到数据加密的内容.为了解决这个问题,网景公司在资源子网和通信子网之间添加了半

加密 解密过程详解及openssl自建CA  

            加密 解密过程详解及openssl自建CA 为了数据信息能够安全的传输要求数据要有一定的安全性那么数据的安全性包含哪些方面的特性呢?    NIST(美国信息安全署)做了如下的定义:    保密性:       1,数据的保密性 指的是数据或隐私不向非授权者泄漏                   2,隐私性  信息不被随意的收集    完整性:       1,数据的的完整性:信息或程序只能被指定或授权的方式改变不能被随意的             修改