Linux安全和加解密(二)

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

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

一、安全协议

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

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

1995SSL 2.0 Netscape   1.0不普及
1996: SSL 3.0
1999: TLS 1.0
2006: TLS 1.1 IETF(Internet工程任务组) RFC 4346
2008TLS 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:加密模块应用库,实现了ssltls,包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安全和加解密(二)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Rework

Rework

Jason Fried、David Heinemeier Hansson / Crown Business / 2010-3-9 / USD 22.00

"Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals' success and inspiring us to put them into practice. There's no jarg......一起来看看 《Rework》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具