Linux安全和加解密(二)

栏目: 服务器 · 发布时间: 5年前

内容简介:SSL: Secure Socket LayerTLS: Transport Layer Security握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。

一、安全协议

SSL: Secure Socket Layer 安全套阶层协议

TLS: Transport Layer Security 安全 传输 协议,SSL改名TLS,一个东西,可通称

1995:SSL 2.0 Netscape   1.0不普及
1996: SSL 3.0
1999: TLS 1.0
2006: TLS 1.1 IETF(Internet工程任务组) RFC 4346
2008:TLS 1.2 当前使用   最普遍
2015: TLS 1.3
  • 功能:机密性,认证,完整性,重放保护 (防重放,第一次有效第二次失效) 
  • 两阶段协议,分为握手阶段和应用阶段

握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。

应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

SSL/TLS

Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换

ChangeCipherSpec 协议:一条消息表明握手协议已经完成

Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告

Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等

HTTPS 协议:就是“ HTTP 协议 ”和“ SSL/TLS 协议 ”的组合。HTTP over SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二进制形式传输       用的最多

二、SSL协议的开源实现:OpenSSL

三个组件:

openssl: 多用途的命令行工具,包openssl
libcrypto: 加密算法库,包openssl-libs
libssl:加密模块应用库,实现了ssl及tls,包nss

openssl命令:

两种运行模式: 交互模式 和  批处理模式

openssl version:程序版本号

命令大致分为三类:

标准命令:子命令 enc, ca, req, …

消息摘要命令:子命令 dgst …

加密命令:子命令 enc …

查看更多子命令    openssl ? 

1、对称加密:

工具:openssl enc, gpg

算法:3des, aes, blowfish, twofish

enc命令:

帮助: man enc

加密:  openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher

解密:  openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile 生成新文件

-e  表示加密

-d  表示解密

-in /PATH/TO/FILE 要加密的文件

-out /PATH/TO/FILE 加密后生成新文件;不加这个选项就只有标准输出,不生成文件

-pass STRING 表示对称加密的秘钥是什么

-a|-base64 表示以base64文本格式进行编码  (大小写字母 / 及 + 的表现形式,不够六位用=补足)

-salt      加杂质使乱码  

2、单向加密:

工具:md5sum,sha1sum,sha224sum,sha256sum…

openssl dgst

dgst命令:

帮助: man dgst

openssl dgst -md5 [-hex默认] /PATH/SOMEFILE

openssl dgst -md5 testfile

md5sum testfile 结果同上,格式不一样

生成用户密码:   passwd命令

帮助: man sslpasswd

openssl passwd -1  不指定salt,则随机生成

openssl passwd -1 -salt SALT(最多8位)    指定salt

openssl passwd -1 –salt centos 指定盐,则同样的密码加密后生成同样的字符串

Linux安全和加解密(二)

生成随机数: rand命令

帮助: man sslrand

openssl rand -base64|-hex NUM

NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为 NUM*2  

注:-base64 二进制的六位,指定数字NUM若不是3的倍数,会用=补足

如下图:

Linux安全和加解密(二)

随机数生成器:伪随机数字

键盘和鼠标,块设备中断

/dev/random:仅从熵池返回随机数;随机数用尽,阻塞

/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞

3、生成密钥对

生成密钥对儿: man genrsa

生成私钥

openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

(umask 077; openssl genrsa -out test.key -des 2048) 

生成私钥文件,并设定权限及加密私钥,小括号开启子进程,不改变父进程的umask值

将加密key解密并生成文件

  openssl rsa -in test.key -out test2.key

从私钥中提取出公钥

openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE

例:openssl rsa –in test.key –pubout –out test.key.pub

公钥加密:

算法:RSA, ELGamal

工具:gpg,openssl rsautl( man rsautl

数字签名:

算法:RSA, DSA, ELGamal

密钥交换:

算法:dh

DSA: Digital Signature Algorithm

DSS:Digital Signature Standard

RSA:

三、创建CA和申请证书

创建私有CA:

openssl的配置文件: /etc/pki/tls/openssl.cnf   其中定义了openssl完成CA工作时的相关属性定义

Linux安全和加解密(二)

三种策略:

匹配match:要求申请填写的信息跟CA设置信息 必须一致

支持supplied:必须填写这项申请信息

可选optional:可有可无

1、创建所需要的文件     (服务器端) 掌握!!!

touch /etc/pki/CA/index.txt      生成证书索引数据库文件,内容可为空, 但必须有 ,否则会报错

echo 01 > /etc/pki/CA/serial     指定第一个颁发证书的序列号 没有会报错,十六进制数

2、 CA自签证书     (服务器端)      掌握!!!

生成私钥

cd /etc/pki/CA/   后续创建的文件夹和目录都要求在此目录下

(umask 066; openssl genrsa -out   /etc/pki/CA/private/cakey.pem  2048)  目录及文件名定死了

生成自签名证书

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

-x509表示自签名,没有表示申请,签名证书路径名称定死   交互式命令

直接cat /etc/pki/CA/cacert.pem base64编码看不懂

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

-x509:专用于CA生成自签证书

-key:生成请求时用到的私钥文件

-days n:证书的有效期限

-out /PATH/TO/SOMECERTFILE: 证书的保存路径

3、颁发证书      掌握!!!

在需要使用证书的主机生成证书请求

给web服务器生成私钥    (客户端)

(umask 066; openssl genrsa -out  /etc/pki/tls/private/ test.key 2048)     路径和名字没规定

生成证书申请文件   (客户端)

openssl req -new -key /etc/pki/tls/private/test.key   -out / etc/pki/tls/test.csr    交互式命令

-days 365这里不写,有效期由颁发者决定

将证书请求文件传输给CA   (客户端)

 scp / etc/pki/tls/test.csr  IP:/PATH/TO

CA签署证书,并将证书颁发给请求者    (服务器端)

openssl ca -in /tmp/test.csr out /etc/pki/CA/certs/ test.crt -days 365     目录定死,有效期默认一年

注意:默认国家,省,公司名称三项必须和CA一致,若想不一致可以更改配置文件设定

查看证书中的信息:   (服务器端)

openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates  

参数:Text格式查看、单看颁发人、单看颁发对象、单看编号、单看有效期

查看指定编号的证书状态    (服务器端)

openssl ca -status SERIAL

补充: cat /etc/pki/CA/index.txt 查看所有证书  行首带V表示有效,吊销R

或者传入Windows电脑,改后缀为.crt或 .cer才会变证书图标,即可查看

安装证书:双击证书图标,安装过程中要出现安全警告才正确!在控制面板-Internet选项-内容查看

4、吊销证书    (了解)

在客户端获取要吊销的证书的serial

openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,吊销证书:

openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行

echo 01 > /etc/pki/CA/crlnumber

更新证书吊销列表

openssl ca -gencrl -out /etc/pki/CA/crl.pem

查看crl文件:

openssl crl -in /etc/pki/CA/crl.pem -noout -text

本文来自投稿,不代表 Linux 运维部落立场,如若转载,请注明出处:http://www.178linux.com/99795


以上所述就是小编给大家介绍的《Linux安全和加解密(二)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

像计算机科学家一样思考Python (第2版)

像计算机科学家一样思考Python (第2版)

[美] 艾伦 B. 唐尼 / 赵普明 / 人民邮电出版社 / 2016-7 / 49.00

本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程。贯穿全书的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介。 全书共21章,详细介绍Python语言编程的方方面面。本书从基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引领读者循序渐进地学习变量、表达式、语句、函数和数据结构。书中还探讨了如何处理文件和......一起来看看 《像计算机科学家一样思考Python (第2版)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码