OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能以及ssl协议,并提供程序供测或其他目的使用。

传输层协议:TCP, UDP, SCTP

port:进程地址,进程向内核注册使用某端口(独占)

同一主机上的进程间通信:IPC , message queue,shm,semerphor

不同主机上的进程间通信:socket

cip:port <-- --> sip:port

cip:55673 <-- --> sip:80

监听模式:LISTEN(ip:port)

SSL:Secure Socket Layer

http --> ssl --> https

安全的目标:

保密性:confidentiality

完整性:integrity

可用性:availability

攻击类型:

威胁保密性的攻击:窃听、通信量分析;

威胁完整性的攻击:更改、伪装、重放、否认

威胁可用性的攻击:拒绝服务(DoS)

解决方案:

技术(加密和解密)、服务(用于抵御攻击的服务,也即是为了上述安全目标而特地设计的安全服务)

加密和解密:

传统加密方法:替代加密方法、置换加密方法

现代加密方法:现代块加密方法

服务:

认证机制

访问控制机制

密钥算法和协议

对称加密

公钥加密

单向加密

认证协议

Linux系统:OpenSSL(ssl),GPG(pgp)

OpenSSL由三部分组成:

libencrypto库

libssl库

openssl多用途命令行工具

加密算法和协议:

对称加密:加密和解密使用同一个密钥;

DES:Data EncryptionStandard;

3DES:triple DES

AES:Advanced EncryptionStandard;(128bits,192bits,256bits,384bits)

Blowfish

Twofish

IDEA

RC6

CAST5

特性:

1.     加密、解密使用同一个密钥

2.     将原始数据分割称为固定大小的块,组个进行加密;

缺陷:

1.     密钥过多;

2.     密钥分发困难;

公钥加密:密钥分为公钥与私钥

公钥:从私钥中提取产生;可公开给所有人;pubkey

私钥:通过工具创建,使用者自己留存,必须保证其私密性;secret key

特点:用公钥加密的数据,只能使用与之配对的私钥解密;反之亦然;

用途:

数字签名:主要在于让接收方确认发送方的身份;

密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;

数据加密

算法:RSA,DSA,ELGamal

DSS:Digital SignatureStandard

DSA:Digital SignatureAlgorithm

单向加密:即提出数据指纹;只能加密不能解密;

特性:定长输出、雪崩效应;

功能:保证数据完整性;

算法:

md5:message digest 5,  128bits

sha1:secure hashalgorithm 1, 160bits

sha224,sha256,sha384,sha512

密钥交换:IKE(InternetKey Exchange)

公钥加密

DH(deffie-Hellman)

A: p,g

B: p,g

A:x --> p^x%g==>B

A:(p^y%g)^x=p^yx%g

B: y

--> p^y%g ==>A

B: (p^x%g)^y=p^xy%g

PKI:Public Key Infrastructure

公钥基础设施:

签证机构:CA

注册机构:RA

证书吊销列表:CRL

证书存取库:

x.509v3:定义了证书的结构以及认证协议标准

版本号

序列号

签名算法ID

发行者名称

有效期限

主体公钥

发行者的唯一标识

扩展

发行者的签名

SSL:Secure sockets Layer

Netscape: 1994

V1.0, V2.0, V3.0

TLS:Transport Layer security

IETF:1999

V1.0, V1.1, V1.2, V1.3

分层设计:

1.     最底层:基础算法原语的实现,aes,rsa,md5

2.     向上一层:各种算法的实现;

3.     再向上一层;组合算法实现的半成品;

4.     用各种组件拼装而成的各种成品密码学协议软件;

SSL/TLS

SSL:安全套接字层(ssl 1.0,ssl2.0,ssl3.0)

TLS:传输层安全(tls 1.0,tls1.1,tls 1.2,tls 1.3)

SSL会话的主要三步:

客户端向服务器端索要并验证证书;

双方协商生成“会话密钥”;

双方采用“会话密钥”进行加密通信;

SSL Handshake Protocol:ssl握手协议

第一阶段:ClientHello

支持协议的版本,比如tls 1.2;

客户端生成一个随机数,稍后用户生成“会话密钥”

支持的加密算法,比如AES、3DES、RSA;

支持的压缩算法;

第二阶段:serverhello

确认使用的加密通信协议版本,比如tls 1.2;

服务器端生成一个随机数,稍后用于生成“会话密钥”

确认使用的加密方法;

服务器证书;

第三阶段:

验证服务器证书,在确认无误后取出其公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)

发送以下信息给服务器端:

一个随机数;

编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;

客户端握手结束通知;

第四阶段:

收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所有用到的“会话密钥”;

向客户端发送如下信息;

编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;

服务端握手结束通知;

Openssl(2)

组件:

libcrypto,libssl主要由开发者使用;

openssl:多用途命令行工具;

openssl:

从多子命令,分为三类:

标准命令

消息摘要命令(dgst子命令)

加密命令(enc子命令)

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

对称加密:

工具:openssl  enc   gpg

支持的算法:3des,aes,blowfish,towfish

enc命令:

加密:~]# openssl  enc -e  -des3  -a -salt  -in fstab   -out fstab.ciphertext

解密:~]# openssl  enc -d  -des3  -a -salt  -out fstab   -in fstab.ciphertext

单向加密:

工具:openssl dgst,md5sum,sha1sum,sha224sum,…

dgst命令:~]#openssl dgst –md5/path/to/somefile

一般可以验证文件的完整性。

生成用户密码:

工具:passwd,openssl  passwd

openssl passwd -1 –salt  SALT

Note:salt不同,相同的密码,输出也不同。

生成随机数:

工具:openssl rand

~]# openssl  rand -hex  NUM

~]# openssl  rand -base  NUM

公钥加密:

加密解密:

算法:RSA,ELGamal

工具:openssl rsautl,gpg

数字签名:

算法:RSA,DSA,ELGamal

密钥交换:

算法:DH

生成密钥:

生成私钥:#(umask077 ;openssl genrsa –out /path/to/private_key_fileNUM_BITS)

提出公钥:#openssl rsa –in /path/from/private_key_file  -pubout

Linux系统上的随机数生成器:

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

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

熵池中随机数的来源;

磁盘IO中断时间间隔

键盘IO中断时间间隔

CA:

公共信任的CA,私有CA;

建立私有CA:

openssl

OpenCA

openssl命令:

配置文件:/etc/pki/tls/openssl.cnf

构建私有CA示例:准备两台主机,一台作CA主机192.168.19.128,一台作用户主机192.168.19.134(证书请求主机)

构建私有CA:在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;

步骤:

1)    生成私钥:

~]# (umask077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

2)    生成自签证书;

~]# opensslreq -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem-days 3655

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

-x509:生成自签格式证书,专用于创建私有CA;

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

-out:生成的请求文件路径;如果自签操作将直接生成签署过的证书

-days:证书的有效时长,单位为day;

3)    为CA提供所需的目录及文件;

~]# mkdir  -pv /etc/pki/CA/{certs,crl,newcerts}

~]# touch  /etc/pki/CA/{serial,index.txt}

~]# echo  01 > /etc/pki/CA/serial

要用到证书进行安全通信的服务器,需要向CA请求签署证书;

步骤:(以httpd为例)

1)    用到证书的主机生成私钥:

~]# mkdir  /etc/httpd/ssl

~]# cd  /etc/httpd/ssl

~]#(umask  077; openssl  genrsa -out /etc/httpd/ssl/httpd.key  2048)

2)    生成证书签署请求

3)    将请求通过可靠方式发给CA主机;

~]#scp /etc/httpd/ssl/httpd.csr  root@192.168.19.128:/tmp/

可在CA主机上查看请求主机发送的证书请求;

4)    在CA主机上签署证书;

~]# opensslca  -in /tmp/httpd.csr  -out  /etc/pki/CA/certs/httpd.crt  -days 365

查看 证书信息:

~]# openssl x509  -in/etc/pki/CA/certs/httpd.crt  -noout  -serial -subject

5)    CA所在的主机将签署完的证书,发送回请求主机;

~]#scp  /etc/pki/CA/certs/httpd.crt  root@192.168.19.134:/etc/httpd/ssl/

吊销证书:

步骤:

1)    客户端获取要吊销证书的serial(在使用证书的主机执行):

~]#openssl  x509 –in /etc/pki/CA/certs/httpd.crt  -noout -serial  -subject

2)    CA主机吊销证书

先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致;

吊销:

#openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.PEM

其中的 SERIAL要换成证书真正的序列号;

3)    生成吊销证书的吊销编号(第一次吊销证书时执行)

echo 01 >/etc/pki/CA/crlnumber

4)    更新吊销证书列表

#openssl ca–gencrl  -out  thisca.crl

查看crl文件:

#openssl crl –in  /path/from/crl_file.crl  -noout –text

本文转自 claude_liu 51CTO博客,原文链接:http://blog.51cto.com/claude666/1971422,如需转载请自行联系原作者

Linux自学笔记——OpenSSL命令行工具相关推荐

  1. Linux命令行如何编辑word文档,在Linux平台下用命令行工具显示Word文档

    在Linux平台下用命令行工具显示Word文档 ·Antiword ·Catdoc ·wvWare[@more@] Viewing Word files at the command line Wed ...

  2. 拿走不谢!创客学院教你64个Linux运维必备命令行工具

    系统管理员(sysadmins)负责日常维护生产系统和服务.其中一个关键任务就是保证功能性服务能24小时工作.为了这个,他们得很小心地计划备份方式,灾难管理策略,定时维护,安全审查,等等.和任意其他管 ...

  3. linux运行16668端口,Linux 性能监控之命令行工具

    引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...

  4. 显示器 Linux 性能 18 (一个命令行工具传递)

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...

  5. linux终端字体放大_微软Build:Windows 将附完整Linux内核,新命令行工具,开源六小时冲上GitHub第二...

    21CTO导读:微软于2016年成为Linux基金会的成员,同时宣布加入OSI,以增加其在宣传开源软件的使用.贡献和发布方面的作用,包括其客户和整个生态系统. 微软还是Linux基金会的"高 ...

  6. linux下的安装命令行工具下载,本地安装DEB包的3种命令行工具(适合Debian体系)

    1. 前言 在本教程中,我们将学习如何使用三种不同的命令行工具(dpkg.apt和gdebi)在Debian及其衍生产品(如Ubuntu和Linux Mint)中安装本地软件包(. deb). 这对那 ...

  7. linux开源炫酷命令行工具,Linux上超酷的命令行扩展工具Oh My Zsh

    Oh My Zsh 是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式.它基于 zsh 命令行,提供了主题配置,插件机制,已经内置的便捷操作.给我们一种全新的方式使用命 ...

  8. jq linux下载文件,linux下的json命令行工具–jq

    jq是一个很轻量却很强大的命令行下的json解析器.jq是json中的"sed"命令,它可以用来slice.filter.map.transform json数据.jq是用C编写的 ...

  9. linux端口映射_Linux命令行工具

    /* ----------- wpa_supplicant的使用方法 ------------*/ 介绍: 对无线网络的配置是全局性的?而非针对具体接口.wpa_supplicant是一个 独立运行的 ...

最新文章

  1. 协方差及PCA降维计算
  2. 「尖峰对话」问题征集:向张宏江和John Hopcroft 近距离提问
  3. LaTeX如何让两张图并排显示
  4. 计算机二级学号填错了,计算机二级错题(58页)-原创力文档
  5. [开源]KJFramework.Message 智能二进制消息框架 -- 性能提升
  6. 十四、堆(Heap)
  7. 【Java】eclipse如何设置成保护眼的背景色
  8. JavaScript每日学习日记(0)
  9. ZZULIOJ ASCII码排序(多实例测试)
  10. XSS、CSRF与验证码等等
  11. IMI 基于 Swoole 开发的协程 PHP 开发框架 常驻内存、协程异步非阻塞
  12. 简书的假想用户场景以及不同用户各自需要解决的烦恼
  13. python是什么类型的编程语言-python是什么编程语言
  14. 【教程搬运】廖雪峰Git的使用教程(二)
  15. 【工具分享】分享一个移动端网络诊断工具(适用于安卓平台)
  16. 遥控三通直升机飞行原理简介
  17. 如何做客户分析?客户分析的内容有哪些?
  18. 沙扬娜拉一首——赠日本女郎(徐志摩)
  19. 一本通 3.1 例 1」黑暗城堡
  20. UOS系统(ubuntu)安装开发环境

热门文章

  1. 把kali linux 装进 U盘并实现数据可存储
  2. aws php 上传文件 限制大小_单个文件大小 上传百度云盘 微信发送 有大小限制 怎么破?...
  3. 企业CIO如何做好软件资产管理及优化
  4. 地址搜索栏设置 极速浏览器
  5. 简易购物车实体类的设计
  6. Jupyter Lab 十大高生产力插件
  7. 2023每日发布行业及概念热点切换跟踪图!
  8. SQL Server 连接字符串和身份验证
  9. 单片机中断系统应用实例(两组实验+Proteus仿真+C源程序)
  10. Javabase入门介绍