设为首页 收藏本站
查看: 630|回复: 0

[经验分享] linux中加密解密以及Opensll建立CA

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-23 08:57:16 | 显示全部楼层 |阅读模式

  现在如今个人以及公司对自己的数据以及隐私越来越关注,之前美国斯诺登事件的爆出,又将通讯安全话题引发激烈的讨论。下面我们就来说下linux中的加密解密,以及通讯过程中如何确保通讯的安全。

常见的加密方法有三种:对称加密、单向加密、非对称加密,下面简单说下这三种加密方式。

对称加密:加密和解密使用同一个密钥;依赖于算法和密钥;安全性依赖于密钥,而非算法常见算法有DES:Data Encryption Standard, 56bits、3DES、AES: Advanced Encrpytion Standard, (128bits, 192, 256, 384, 512bits)、Blowfish、Twofish、IDEA、RC6、CAST5。此些算法都有由数学家们通过精心计算得到。

特性:

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

2、将明文分隔成固定大小的块,逐个进行加密;

           缺陷:

    1、密钥过多;

    2、密钥分发;


   非对称加密:公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然;有公钥和私钥的密钥对,私钥:secret key,仅允许个人使用,公钥:public key,公开给所有获取;私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份,与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方,对方得到自己公钥加密的数据以及发送者的私钥。通常的算法有RSA、DSA、ELGamal,主要的特征有:1、密钥长度较大,例如512bits,2048bits, 4096bits,2、加密解密分别使用密钥对儿中的密钥相对进行,3、常用于数据签名和密钥交换


   单向加密:通过提出数据的特征码获得,它的特性为:1、密钥长度较大,例如512bits,2048bits, 4096bits;2、雪崩效应:原始数据微小改变,将会导致结果巨大变化;3、不可逆;通常的算法有:MD5(128bits定长输出)、SHA1(160bits定长输出)、SHA256(160bits定长输出)、SHA256(256bits定长输出)、SHA512(128bits定长输出)等。


在一次加密通信过程的过程如下。

   发送者:

    1、使用单向加密算法提取生成数据的特征码;

    2、使用自己的私钥加密特征码附加在数据后面;

    3、生成用于对称加密的临时密钥;

    4、用此临时密钥加密数据和已经使用私钥加密后的特征码;

    5、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方;

  接收方:

    1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;

    2、使用对称密钥解密对称加密的 数据和私钥加密的特征码密文;从而获得数据和特征码密文;

    3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码;

    4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;

此过程比较繁琐,故通常的使用者不会手动每次去操作此过程,因此产生了SSL,SSL:secure socketlayer(即获取到对方服务器的CA证书,得到对方的公钥,生成私钥,然后发送给服务器端,服务器发送数据给请求方,请求方有服务器端的公钥,可以解密,这样就能形成联系),通常证书主要有两类,主机证书以及用户证书,用户证书包含主机证书将自己的私钥形成的公钥,以及CA证书等信息。CA:CA证书的发证机构为具有公信力的机构,一般网站会购买一个CA证书用于认证,保证公钥信息的安全分发;

数字证书的格式(x.509 v3):

   版本号(version)

   序列号(serial number):CA用于惟一标识此证书;

   签名算法标志(Signature algorithm identifier)

   发行者的名称:即CA自己的名称;

   有效期:两个日期,起始日期和终止日期;

   证书主体名称:证书拥有者自己的名字

   证书主体公钥信息:证书拥有者自己的公钥;

   发行商的惟一标识:

   证书主体的惟一标识:

   扩展信息:

   签名:CA对此证书的数字签名;

openssl是基于ssl开发的,在linux上使用,openssl的组成部分:libcrypto(加密、解密库文件)、libssl( ssl协议实现)、openssl(多用途命令行工具,每种功能都使用专用的子命令来实现)。

下面首先来说下openssl的一些加密指令:

openssl:

子命令分类:标准命令、消息摘要命令、加密、解密相关的命令

加密文件(对称加密):

工具:openssl enc, gpg

算法:des, 3des, aes, blowfish, twofish, idea, cast5

enc工具:

#openssl enc -e -CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out/PATH/TO/SOMECIPHERFI

例openssl enc -e -des3 -a -salt -in path -out path.de3

#openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out/PATH/TO/SOMEFILE

例openssl enc -d -des3 -a -salt -in path.de3 -out path.22

                                          

单向加密:

算法:md5, sha1

工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum,sha512sum

# openssl dgst -CIPHER(算法如md5) /PATH/TO/SOMEFILE...

  或者 md5sum  /PATH/TO/SOMEFILE

例如:

  [iyunv@localhost tmp2]# openssl dgst -md5 lib

  MD5(lib)= 8fcd1d3f02caeebfa22c649471a57b28               

  [iyunv@localhost tmp2]# md5sum lib

  8fcd1d3f02caeebfa22c649471a57b28 lib

MAC: 消息认证码,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;

机制:

CBC-MAC

HMAC:使用md5或sha1算法

生成用户密码:

# openssl passwd -1 -salt 8bits   -salt是加在密码前面,用于加强加密

生成随机数:

# openssl rand -hex|-base64 NUM   -hex是16位  -base64生成字母和数字

随机数生成器:

random,urandom

熵池:保存硬件中断产生的随机数

/dev/random:仅从熵池中返回随机数,当熵池中的随机数耗尽时,取随机数的进程将会被阻塞;

/dev/urandom:先从熵池中取随机数,当熵池中的随机耗尽时,就通过伪随机数生成器生成随机数;


下面说下我们平时工作会遇到的在自己公司建立私有的CA,以及发证、签证的过程;


使用OpenSSL构建私有CA的过程为主机在服务器生成私钥,然后生成自己证书文件;

(1) 私钥用于签发证书时,向证书添加数字签名使用;

(2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”;

配置文件(默认CA的配置文件):/etc/pki/tls/openssl.cnf

工作目录:/etc/pki/CA/

[iyunv@localhostCA]# ls

certs  crl newcerts  private

certs证书文件存放

crl       吊销列表

newcerts 新证书文件

private 私钥存放位置

建立私有CA:

1、生成私钥文件:/etc/pki/CA/private/cakey.pem

#(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

2、生成自签证书

#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days #、

-new: 生成新的证书签署请求;

-key:私钥文件路径,用于提取公钥;

-days N: 证书有效时长,单位为“天”;

-out:输出文件保存位置;

-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;

3、提供辅助文件

#touch /etc/pki/CA/index.txt

# echo 01 > /etc/pki/CA/serial  (01表示第一个)

给节点发证书:

1、节点申请证书

在证书申请的主机上进行如下步骤:

(1) 生成私钥;(umask 077; openssl genrsa -out httpy.key1024)

(2) 生成证书签署请求; openssl req-new  -key /etc/http.key -out /etc/httpd/http.csr

(3) 把请求发送给CA;                                                      

注意:

(a) 其中的subject信息部分,要与CA的保持一致;

(b) Common Name要使用此主机在通信真实使用名字;

2、CA签发证书

(1) 验正请求者信息

(2) 签署证书

# httpopenssl ca -in/PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N

(3) 把签署好的证书发还给请求者

吊销证书:

1、获取吊销证书的序列号;

#openssl x509 -in /PATH/FROM/CRT_FILE -noout -serial -subject

2、实现证书吊销

(1) 吊销证书

#openssl ca -revoke /PATH/FROM/CRT_FILE

(2) 生成吊销证书的编号

echo01 > /etc/pkie/CA/crlnumber

(3) 更新证书吊销列表

#openssl crl -gencrl -out THISCA.cr


小结下,在公司的服务器中很有可能会用到私有CA,以保证通信的安全性。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-59854-1-1.html 上篇帖子: 通过OpenSSL搭建私有CA及加密解密介绍 下篇帖子: CentOS 下搭建 aria2 远程下载环境 linux 加密
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表