基本概念:
加密作为数据安全保障的一种方式,它不是近代才产生的,历史已经相当久远;加密算法就是加密的方法.
数据加密解密:
数据加密的基本过程就是对原来为明文的文件或数据按特定算法进行处理,使其成为不可读的一段代码,通常称为"密文",使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程
为什么需要对数据加密:加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取;比如个人的银行账户信息,电话号码等泄露,引来的后果可想而知。
明文和密文
在密码学中,明文是指传送方想要接收方获得的可读信息。
明文经过加密所产生的信息被称为密文,而密文经过解密而还原得来的信息被称为明文。
加密技术通常分为两大类:"对称式"和"非对称式"
对称式加密:
对称加密就是将信息使用一个密钥进行加密,解密时使用同样的密钥,同样的算法进行解密。
特点:1.速度快,一般用于加密数据
2.将原始数据分割成固定大小的块,逐个进行加密;
常用的加密算法:
DES(56bits):数据加密标准
3DES
AES(128bits):高级加密标准
Blowfish 对称加密
Twofish
IDEA
RC6
CAST5
Serpent
非对称式加密:
加密和解密用的钥匙不同,通常一个是公开的,称为公钥,另一个保密,称为私钥。
加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不
能打开加密文件。这里的"公钥"是指可以对外公布的,"私钥"则不能,只能由持有人一个人知道。它的优越性就
在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难把密钥告诉对方,不管用什么方法都有可能
被别窃听到。而非对称式的加密方法有两个密钥,且其中的"公钥"是可以公开的,也就不怕别人知道,收件人解
密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。
特点:相对于对称加密速度要慢,
算法:RSA,EIGmal,DSA
单向加密:
一般不用于加密,而是提取数据的特征码。
特点:不可逆,通过算法计算从数据中提取到特征码,不能由特征码算出源数据
算法:
md5:128bits
sha1:160bits
sha512:512bits
---------------------------------------------------------------------------------------------------------------------------
PKI概念:
公开密钥基础建设(英语:Public
Key Infrastructure,缩写:PKI)
是一组由硬件、软件、参与者、管理政策与流程组成的基础架构,其目的在于创造、管理、分配、使用、存储以
及撤销数字证书。
CA:
数字证书认证机构(英语:Certificate
Authority,缩写为CA),也称为电子商务认证中心、电子商务认证授权
机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的
合法性检验的责任。
CA 也拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA
的签字从而信任
CA ,任何人都可以得到
CA 的证书(含公钥),用以验证它所签发的证书。
如果用户想得到一份属于自己的证书,他应先向 CA
提出申请。在 CA 判明申请者的身份后,便为他分配一个公
钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。
如果一个用户想鉴别另一个证书的真伪,他就用
CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证
书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。
证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等。
------------------------------------------------------------------------------------------------------------------------------------------
SSL介绍:
安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。
SSL是Netscape于1994年开发的,后来成为了世界上最著名的web安全机制,所有主要的浏览器都支持SSL协议。
目前有三个版本:2、3、3.1,最常用的是第3版,是1995年发布的。
SSL协议的三个特性
① 保密:在握手协议中定义了会话密钥后,所有的消息都被加密。
② 鉴别:可选的客户端认证,和强制的服务器端认证。
③ 完整性:传送的消息包括消息完整性检查(使用MAC)。
-------------------------------------------------------------------------------------------------------------
Openssl创建私有CA:
---------------------------------------------------------------------------
CA服务器自签名
创建私有CA服务器
1.生成密钥对
[[email protected] ~]# cd /etc/pki/CA [[email protected] CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
2.CA服务器自签名证书
[[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365 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) []:Bei Jing #省份 Locality Name (eg, city) [Default City]:Bei Jing #城市 Organization Name (eg, company) [Default Company Ltd]:RA Company #公司 Organizational Unit Name (eg, section) []:IT #部门 Common Name (eg, your name or your server‘s hostname) []:ca.server.com #主机名 Email Address []:[email protected] #管理员邮箱
-new: 生成新的证书签署请求;
-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;
-key:私钥文件路径,用于提取公钥;
-days N: 证书有效时长,单位为“天”;
-out:输出文件保存位置;
3.创建需要的文件:
[[email protected] CA]# touch index.txt serial crlnumber #分别创建 :索引文件,证书序号,吊销证书序号 [[email protected] CA]# echo 01 >serial #创建证书序列号 -----------------------------------------------------------------------------------
1.客户机申请证书步骤
1 生成私钥;
[[email protected] tmp]# (umask 077; openssl genrsa -out httpd.key 1024) Generating RSA private key, 1024 bit long modulus ........++++++ ......++++++ e is 65537 (0x10001) -------------------------------------------------------
2.生成证书签署请求:
[[email protected] tmp]# openssl req -new -key httpd.key -out httpd.csr 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) []:China Locality Name (eg, city) [Default City]:Shenzhen Organization Name (eg, company) [Default Company Ltd]:IT company Organizational Unit Name (eg, section) []:IT ops Common Name (eg, your name or your server‘s hostname) []:ca.server.com Email Address []:[email protected] Please enter the following ‘extra‘ attributes to be sent with your certificate request A challenge password []: An optional company name []:
3.将请求文件发往CA服务器;
[[email protected] tmp]# scp httpd.csr 10.76.249.100:/tmp/ The authenticity of host ‘10.76.249.100 (10.76.249.100)‘ can‘t be established. RSA key fingerprint is 52:f6:17:d0:d7:cf:42:96:11:ae:45:ba:2e:fa:0f:61. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘10.76.249.100‘ (RSA) to the list of known hosts. [email protected]‘s password: httpd.csr 100% 708 0.7KB/s 00:00 -----------------------------------------------------------------------------------------
CA服务器给客户机签署证书:
CA服务器签证
[[email protected] tmp]# openssl ca -in httpd.csr -out httpd.crt -days 365 Using configuration from /etc/pki/tls/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 2 (0x2) Validity Not Before: Sep 24 15:47:13 2015 GMT Not After : Sep 23 15:47:13 2016 GMT Subject: countryName = CN stateOrProvinceName = Bei Jing organizationName = RA Company organizationalUnitName = IT company commonName = ca.server.com emailAddress = [email protected] X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 93:7C:A2:62:5F:31:28:BC:BC:EA:D9:52:D1:3E:12:09:7E:DF:62:65 X509v3 Authority Key Identifier: keyid:3D:30:B1:5B:BF:68:40:53:4F:93:E0:74:75:AF:16:1F:1D:13:E5:4D Certificate is to be certified until Sep 23 15:47:13 2016 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
将签证好的httpd.crt证书发给客户端
------------------------------------------------------------------------------------------------------------------------------
吊销证书
(4) 吊销证书
(a) 客户端获取要吊销的证书的serial
#
openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
(b) CA
先根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致;
吊销证书:
#
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
(c) 生成吊销证书的编号(第一次吊销一个证书)
#
echo 01 > /etc/pki/CA/crlnumber
(d) 更新证书吊销列表
#
openssl ca -gencrl -out thisca.crl
查看crl文件:
#
openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text