在现实生活中密码的重要不言而喻,在我们的计算机上密码的更是重中之重,本文主要简单的讲述加密解密的实现机制,openssl的基本应用以及如何自己制作CA证书
一、加密解密的基本分类
加密方式现在最要分为三类:对称加密、公钥加密、单向加密
1)、对称加密
对称加密由加密算法加口令组成,比较著名的对称加密算法有DES(56bits),3DES,AES(128bits),Blowfish,Twofish,IDEA,RC6,CSAT5,Serpent等
特性:
1、加密/机密使用统一的口令
2、将原文分割成固定大小的数据块,对这些块进行加密
存在的缺陷
1、口令的传输无法确保其安全性
2、密钥太多,不方便管理
2)、非对称加密
非对称加密由一个公钥和一个私钥组成,其中公钥所有人都可以获取,只有私钥才是自己保存,比较著名的算法有RSA,EIGmal,DSA等
特性:
1、主要用于密钥的交换
2、用户身份认证
存在的缺陷
算法加密比较耗时耗资源
3)单向加密
单向机密主要是用来提前数据的特征码,确保数据的完整性,比较著名的算法有MD5,SHA1,SHA512,CRC-32等
特性:
1、雪崩效应
2、定长输出
二、Openssl基本应用
1)、组成
openssl是一个套件,有libcrypto、libssl、openssl组成,其中
libcrypto:通用功能的加密库
libssl:用于实现TLX/SSL的功能
openssl:多功能命令工具,用于生成密钥,创建数字证书,手动加密解密数据
2)、openssl的常用功能
对称算法:
加密:openssl enc -des3 -a -salt -in /ets/fstab -out /tmp/fstab.cipher
解密:openssl enc -d -dec3 -a -salt -in /tmp/fstab.cipher -out /tmp/fstab
解释:env为对称加密算法的固定使用格式 -des3表示已des3的方式进行加密,-salt表示密码里面加入一些盐,-in 表示加密/解密的文件来源 -out表示加密/解密的文件输出,-d 表示解密
单向加密:
加密:openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1][-out filename] /path/to/somefile
解释:dgst为单向加密的固定使用格式,-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1表示使用的加密算法,-out表示加密的文件输出
非对称加密包括公钥加密和数字签名两种,其中公钥加密使用公钥加密,私钥解密。而数字签名使用私钥加密,公钥解密
三、数字证书
数字证书是有第三方机构使用一种安全的方式将公钥发布出来的表现形式,证书的格式有X509.PKCS等,本文主要讲解X509格式的证书
X509格式的证书由公钥和有效期限,持有者的个人合法身份信息(一遍表示为主机名),证书的使用方式,发放机构的信息,发放结构的数字签名
第三方机构的作用有自签证书,签署证书,将证书发放给用户,维护证书吊销列表
数字证书分为两种,分别为第三方机构的自签证书和用户申请的证书
1)、生成自签证书
[root@station125 tls]# (umask 077; openssl genrsa -out private/cakey.pem 2048) Generating RSA private key, 2048 bit long modulus ..+++ ...............+++ e is 65537 (0x10001)
路径为/etc/pki/tls下,配置文件为openssl.cnf,可以通过修改此配置文件来修改一些默认选项,本出不做详细解释,如有需要的朋友,请自行查看本文档
查看数字证书
[root@station125 tls]# openssl rsa -in private/cakey.pem -pubout -text -noout Private-Key: (2048 bit) modulus: 00:c3:21:a0:b1:84:23:d5:02:c8:3e:a8:69:1c:5d: fb:49:d6:9a:05:6b:cd:76:54:4e:3b:5e:52:f0:a0: 0d:b2:da:4e:0e:3d:36:07:64:4b:74:71:73:84:df: c6:9e:d7:15:40:02:65:f6:59:08:36:3d:f4:29:f4: 16:91:e5:d0:eb:fc:c8:04:8c:05:2f:38:b9:2e:3e: 24:03:bd:40:e7:80:8a:82:19:f9:39:5c:2c:41:7c: 3e:10:a1:e4:51:03:3b:b2:81:c3:d1:0f:10:b3:e0: e0:6d:bf:a3:f6:bb:a2:c2:b1:b8:0c:ec:e7:1c:49: de:6c:5d:e6:88:98:d1:e5:32:8a:e3:08:32:cb:f0: 45:f2:fa:f9:66:2e:e8:79:a7:d6:bc:95:2d:d9:c1: db:7e:59:7b:c7:99:44:9f:15:63:97:0b:f8:e7:84: 46:2f:67:51:5e:3f:50:2b:6b:62:37:76:9f:b3:5f: eb:8d:d7:c7:94:a9:e5:5d:4c:62:08:81:e4:3e:e0: 20:e6:ee:51:32:2a:bf:ef:d7:35:e9:72:21:03:9c: b5:5c:11:83:77:3f:a5:6b:06:15:58:57:6c:74:3e: 14:db:06:41:5b:d3:92:36:f4:f4:6a:f1:a9:da:86: e7:39:7e:2a:de:e5:fd:de:3e:ec:af:22:b9:ec:16: c6:2b
生成自签证书
其中req为表示创建证书的命令,-new表示创建一个新的证书,-x509表示创建证书的格式,-key创建私钥,-out证书的保存位置,-days表示证书的有效期限
创建文件,并为证书编号
[root@station125 tls]# touch index.txt serial crlnumber [root@station125 tls]# echo 01 > serial
2)、用户申请证书的流程
在主机上生成密钥,保存至应用此证书的服务的配置文件目录下, 本文以http为例;
[root@station125 tls]# mkdir /etc/httpd/ssl [root@station125 tls]# cd /etc/httpd/ssl/
用户生成私钥
[root@station125 ssl]# (umask 077; openssl genrsa -out httpd.key 1024) Generating RSA private key, 1024 bit long modulus ..++++++ ...............................++++++ e is 65537 (0x10001)
生成证书签署请求,与生成自签名证书类似
用户将自己生成的httpd.csr文件传输给证书颁发机构
证书颁发机构签署证书
[root@station125 tls]# openssl ca -in http.crs -out http.crt -days 3650
证书颁发机构将生成的crt证书回传给用户即可
用户将证书放置在自己的证书服务的路径下
3)、证书的吊销
[root@station125 tls]# openssl ca -revoke httpd.crt
由于本人水平有限,欢饮大家批评指正!