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)
bican813bican813
上一篇 2018-05-30
下一篇 2018-05-30

相关推荐

  • mysql 高可用

    实验:集群高可用 一个管理——一个主——两个从 管理 主机 从机1 从机2 1.必须先统一时间,做集群必须时间一致,所有主机做如下操作 所有主机统一ntp服务器时间,写入文件里 前期需要手工同步下 启用ntp服务 2.所有主机关掉iptables 和selinux 3.先做主从复制 主机配置文件 这四项必须写 重启服务 查看主机二进制文件的位置 主机创建账号…

    2018-06-19
  • Linux系统上命令的使用格式

    命令的语法通用格式: ~]# COMMAND OPTIONS ARGUMENTS ifconfig命令格式 ifconfig [interface] [options] | address   Echo命令格式 echo [options] …[string]… tty命令格式 tty [options] startx命令格…

    Linux笔记 2018-05-13
  • 第五周博客作业

    1、简述rpm与yum命令的常见选项,并举例
    2、自建yum仓库,分别为网络源和本地源
    3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
    4、简述sed常用操作命令,并举例

    2018-04-11
  • memcached

    数据结构模型: 结构化数据:关系型数据库;mysql、mariadb、oracledb 半结构化数据:xml、json、nosql 非结构化数据:文件系统; 缓存系统的种类: 代理式缓存; 旁路式缓存; memcached的特性: k/v缓存:可序列化数据;存储项:key/value,标志,过期时间; 功能的实现一半依赖于服务端,一半依赖客户端; 分布式缓存…

    2018-07-14
  • Ansible使用介绍(一)基本概念及常用模块

    随着运维自动化经历了从本地部署到基础设施即服务(IaaS)、平台即服务(PaaS)在到软件即服务(SaaS)的发展阶段,掌握多种自动化运维工具就成了运维人员必备技能之一,ansible就是目前国内使用比较广泛的自动化运维工具之一。

    2018-05-29