Linux安全和加解密(二)

本文主要介绍:1、安全协议 2、openssl 3、创建CA和申请证书

一、安全协议

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 指定盐,则同样的密码加密后生成同样的字符串

图片1

 

生成随机数: rand命令

帮助:man sslrand

openssl rand -base64|-hex NUM

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

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

如下图:

图片2

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

键盘和鼠标,块设备中断

/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工作时的相关属性定义

1474551915553921

三种策略:

匹配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

(0)
上一篇 2018-05-30 10:31
下一篇 2018-05-30 22:21

相关推荐

  • Linux学习入门知识

    Linux学习入门知识2

    Linux笔记 2018-06-28
  • LINUX的哲学思想

    1.一切皆文件 把几乎所有资源统统抽象为文件形式,不仅普通的文件,目录、字符设备、块设备、 套接字等还包括硬件设备,甚者通信接口等。在Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。访问任何设备都可以用统一的一个接口。方便统一管理 由众多功能单一的程序组成。一个程序只做一件事,并且要做好,保证linux程序的高效运行。需要…

    Linux笔记 2018-06-27
  • Virtualization虚拟化技术介绍

    Virtualization即虚拟化技术,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率

    2018-07-27
  • rpm以及yum命令的常见选项

    1、简述rpm与yum命令的常见选项,并举例 rpm -q :查询软件包 rpm -i:安装软件包 rpm -U:升级安装 rpm -F:更新软件包 rpm -e:卸载软件包 -v:输出详细信息 -l:列出相关信息 rpm -qa:查询所有已经安装的软件包的信息 rpm -qpl: 查询未安装软件包的信息 rpm   –import   /etc…

    Linux笔记 2018-04-08
  • LVS-NAT与LVS-DR模型实战

    LVS-NAT、LVS-DR实验

    2018-06-24