加密解密、openssl、私有CA创建过程

一、加密解密

加密技术是对信息进行编码和解码的技术,编码是将原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密),加密技术的要点是加密算法。

明文:发送人、接受人和任何访问消息的人都能理解的消息

密文:明文消息经过某种编码,得到的密文消息

加密:将明文消息变成密文消息

解密:将密文消息变成明文消息

算法:取一个输入文本,产生一个输出文本

加密算法:发送方进行加密的算法

解密算法:接收方进行解密的算法

单向加密算法:只能加密,不能解密,其作用是提取数据的特征码,来验证数据的完整性

对称加密算法:加密和解密使用相同的密钥,其特点是可以将原始数据分割成固定大小的块,逐个进行加密,缺点是密钥过多,密钥分发困难

非对称加密算法(公钥加密):密钥是成对出现,加密和解密使用不同的密钥

公钥:公开给所有人

私钥(设置权限):自己留存,必须保证其私密性

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

功能:身份认证(数字签名);密钥交换(公钥加密作用);数据加密

常用算法:

RSA :可用于加密和数字签名的算法,是最具影响力的公钥加密算法,能够抵抗目前已知的密码攻击

DSA:数字签名

单向加密:只能加密,不能解密;提取数据指纹(数据特征码:保证数据的完整性)

特性:定长输出

散列算法,主要验证数据的完整性,即保证消息在发送之后和接受之前没有被篡改对于ssl中使用到的散列算法主要有

md5:是RSA数据安全公司开发的一种单向散列算法

sha1:输入报文的最大长度不超过264位,产生的输出是一个160位的报文摘要,输入是按512位分组进行处理,是不可逆的,防冲突,并具有良好的雪崩效应

二、加密技术:

PGP:Pretty Good Privacy,是一个机遇非对称加密算法RSA公钥体系的邮件加密技术,不但可以对电子邮件加密,还可以对电子邮件附加数字签名,使收信人能明确了解发信人的真实身份。

PKI : Public Key Infrastructure,是一种以非对称加密技术为核心,可以为网络提供安全服务的公钥基础设施,PKI技术起初应用在Internet环境中,为复杂的互联网系统提供统一的身份认证、数据加密和完整性保障机制,可以有效解决应用中的机密性、完整性、真实性和存储控制等安全问题,PKI体系包含认证中心(CA),注册中心(RA)、策略管理、密钥与证书管理、密钥备份与恢复、撤销系统等功能模块结合在一起。

三、SSL

Secure Socket Layer ==安全的套接字层,是介于应用层和传输层之间,应用层数据不再直接发送给传输层,而是先交给ssl层,ssl层对从应用层收到的数据进行加密,并增加自己的ssl头信息。

OpenSSL是实现ssl的开源项目,它包括 三个组件:

openssl:多用途的命令行工具

libcrypto:公共加密库

libssl:库,实现了ssl及tls等功能

SSL会话的简化过程(图)

(1) 客户端发送可供选择的加密方式(需要跟服务器端协商,发送二者都支持的算法),并向服务器请求证书;

(2) 服务器端发送证书以及选定的加密方式给客户端;

(3) 客户端取得证书并进行证书验正:这一步的主要目的是验证服务器端的公钥!

如果信任给其发证书的CA:

(a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;

(b) 验正证书的内容的合法性:完整性验正

(c) 检查证书的有效期限;

(d) 检查证书是否被吊销;

(e) 证书中拥有者的名字,与访问的目标主机要一致;

(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;

(5) 服务用此密钥加密用户请求的资源,响应给客户端;

四、建立私有CA的过程

CA和申请证书都在同一台机器上进行的。
1、CA端操作流程
操作步骤:
1、生成私钥文件;      
2、生成自签署证书;        
3、相关辅助文件
touch/etc/pki/CA/index.txt
echo01 > /etc/pki/CA/serial

注:
(1)私钥用于签发证书时,向证书添加数字签名使用;
(2)证书:每个通信方都导入此证书至“受信任的证书颁发机构”;

1)配置文件

/etc/pki/tls/openssl.cnf

####################################################################

[ CA_default ]  //定义Openssl做为CA时自己的相关路径

dir             = /etc/pki/CA           //指明CA自己的工作目录
certs           = $dir/certs            //已颁发证书的存取位置
crl_dir         = $dir/crl              //已吊销证书的吊销列表表存取位置
database        = $dir/index.txt        //数据库的索引文件存放位置
#unique_subject = no                    // 表示证书的整体信息是不是要唯一
                                       
new_certs_dir   = $dir/newcerts         // 刚签署的证书存放位置

certificate     = $dir/cacert.pem      //CA自己的证书(CA给其他人放证之前要先建立自己ID证书文件)
serial          = $dir/serial          //证书的序列号,下一个要发的证书的序列号,每签一个序列号会怎么加1
crlnumber       = $dir/crlnumber       //吊销证书列表的编号
                                        
crl             = $dir/crl.pem          //当前正在使用的吊销链
private_key     = $dir/private/cakey.pem   // CA私钥存放位置 
RANDFILE        = $dir/private/.rand    //随机数的获取位置

x509_extensions = usr_cert          //定义了x.509的扩展信息中记录为“用户证书”

2)工作目录

[[email protected] ~]# ll /etc/pki/CA
drwxr-xr-x. 2 root root 4096 Sep 18 04:46 certs //证书文件存放位置
drwxr-xr-x. 2 root root 4096 Oct 15  2014 crl //吊销列表存放位置
drwxr-xr-x. 2 root root 4096 Sep 18 04:46 newcerts //新证书存放位置
drwx------. 2 root root 4096 Sep 18 03:52 private //CA私钥存放位置

3)创建CA自己的私钥

[email protected] CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
.....+++
................+++
e is 65537 (0x10001)

4)生成一个CA的自签证书

此自签署证书在/etc/pki/tls/openssl.cnf文件中定义必须放在CA目录下叫cacert.pem;从私钥中提取公钥,并构建成证书签署请求,然后让CA给签署;
格式:openssl req -new -x509-key  /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days #
-x509:表示自签署证书,不加表示证书签署请求;
-key:从那个私钥中自动提取出公钥,并创建一个证书签署请求;
-days:指明给自己签署证书的有效期

[[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
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]:bengbengtu.com      //公司名
Organizational Unit Name (eg, section) []:ops            //部门
Common Name (eg, your name or your server‘s hostname) []:ca.bengbengbengtu.com //证书主题自己的名字,别人和你通信是就使用此名字来联系你,而后你证书中的名字和通信时所使用名字必须要保持一致;否则就认为证书验证无法通过;
Email Address []:[email protected]  //联系人邮箱

5)创建辅助文件

[[email protected] CA]# touch index.txt
[[email protected] CA]# echo 01 > serial

2、给节点发证书
操作步骤:
1、节点申请证书
在证书申请的主机上进行如下步骤;
(1)生成私钥
(2)生成证书签署请求;              
(3)把请求发送给CA;
2、CA签发证书
(1)验证请求者信息
(2)签署证书
(3)把签署好的证书发还给请求者
1)以http目录为示例,给http签署证书:

[[email protected] httpd]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
[[email protected] httpd]# openssl req -new -key ssl/httpd.key -days 365 -out ssl/httpd.csr
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]:bengbengtu.com
Organizational Unit Name (eg, section) []:ops            
Common Name (eg, your name or your server‘s hostname) []:www2.bengbengtu.com //此名称要和证书申请者的FQDN的保持一致
Email Address []:[email protected]

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

#注:以上的国家、省名、城市名要和CA的保持一致

将生成的httpd.csr发送给CA,让CA给签证,过程如下

[[email protected] ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/www2.bengbengtu.com.crt -days 365     //签证
#httpd -M | grep mod_ssl   //查看httpd是否装载mod_ssl,如果没有请安装
#yum -y install mod_ssl      
# vim /etc/httpd/conf.d/ssl.conf
<VirtualHost *:443>
DocumentRoot "/web/vhosts/www2/"
ServerName www2.bengbengtu.com
SSLCertificateFile /etc/httpd/ssl/www2.bengbengtu.com.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

至此,CA建立完成,测试即可!!!

时间: 2024-10-12 08:32:41

加密解密、openssl、私有CA创建过程的相关文章

加密解密以及私有CA的实现

一.加密和解密 什么是加密:加密之前为明文,加密后是密文,将明文转换为密文的过程就是加密. 1. 对称加密 提供算法本身,加密和解密使用的是同一个密钥,用以保证数据的机密性.但安全性依赖于密钥,而非算法. 对称加密的优点是运算特别快:缺点是安全几乎全部依赖于密钥(算法基本上是公开的),当通信对象很多的时候,很难对密钥进行有效管理. 常见算法: DES(Data Encrption Standard):早期的算法,公开可以使用的,56bit密码长度,惨遭淘汰. 3DES:DES后DES再DES A

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

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

OpenSSL(私有CA)

一.相关环境1.系统环境2.软件环境二.OpenSSL相关文件 1.配置文件 2.相关选项 二.OpenSSL:创建私有证书签发机构CA步骤 在确定配置为CA的服务器主机上生成一个自签证书,并为CA提供所需要的目录及文件: 在真正的通信过程中CA服务器主机不需要网络参与,只需要参与到签名中,不需要提供服务 1.生成私钥: ~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) 因为在默认配置文件中默认配置/e

使用加密解密技术和CA认证解决网络传输中的安全隐患

服务端:xuegod63.cn   IP:192.168.1.63 客户端:xuegod64.cn   IP:192.168.1.64   网络安全: 网络传输中的安全隐患-.   中间人攻击 全隐患:        解决方法 1.窃听-- >  加密 2.篡改 ->  哈西算法:MD5,sha1 (检查数据完整性) 3.伪装(钩鱼网站,伪装WIFI)  ->  身份认证(用户名/密码.数字证书) 4.网络中断 (内网冒冲网关,DDOS )  –>绑定静态arp地址: 加大服务器和

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

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

Linux之加密解密基础、openssl及CA基础应用

加密解密基础简介 数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改 (2)数据的机密性:防止文件数据泄漏给未授权用户从而让其利 (3)数据的可用性:保证授权用户能按需访问存取文件数据 因此加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密).加密技术包括两个元素:算法和密钥.算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来

ssl协议相关总结和创建私有CA过程

数据安全的相关术语: NIST规定安全协议的应该具备的特性: 保密性: 数据保密性 隐私性 完整性: 数据完整性 系统完整性 可用性: 安全攻击: 被动攻击:窃听 主动攻击:伪装.重放.消息篡改.拒绝服务 安全机制: 加密.数字签名.访问控制.数据完整性.认证交换.流量填充.路由控制.公证 安全服务: 认证. 访问控制. 数据保密性. 链接保密性 无连接保密性 选择域保密性 流量保密性 数据完整性 不可否认性 密码算法和协议: 对称加密 公钥加密 单向加密 认证加密 所谓的数字签名就是事先用单向

加密解密技术介绍和OpenSSL介绍

网络上实现安全传输是一件非常必要的事情,此篇博文主要介绍一下四种常见的加密解密技术和PKI机制以及如何通过openssl建立私有CA. 一.加密解密技术 (1)对称加密 主要加密算法: 1.DES:Data Encryption Standard 数据加密标准 加密端:将明文划分为64bits为一块,用密钥加密产生64bits的密文 解密端:还原回64bits密文 加密和解密均使用56bits的密钥 2.3DES:Triple DES:也就是进行三次DES加密 3.AES:Advanced En

Linux学习笔记—— 基于CentOS创建私有CA及应用

这篇文章应该是有史以来,历时最长最纠结的一次,毫不夸张的讲总结到词穷的地步了.现在每次一到理论知识梳理的过程,总有种茶壶里的饺子,稍微懂点但有说不出来,哎!这辈子估计当不了老师了,话不多说还得撸起袖子接着写不是. 第一章.详细描述一次加密通讯的过程,结合图示最佳. HTTPS在基于SSL建立会话前,会经历4次握手过程以获取会话密钥.流程如下: 图示1 HTTPs 通讯流程详细说明 1. 客户端请求(ClientHello) 客户端向服务器发送会话请求,这一步称为ClientHello.Clien