本章内容
v 1、安全机制 2、对称加密 3、不对称加密 4、散列算法 5、PKI 和CA
v 在互联网数据传输的过程的,数据的安全私密性是及其重要的,所以就有数据的加密和解密的过程。
数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它的核心是密码学。
数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。
一、为什么要加密
1.1 不加密流量的易受攻击性
密码/数据嗅探
数据操作
验证操作
相当于邮寄明信片
1.2 不安全的传统协议
telnet、FTP、POP3等等;不安全密码
http、smtp、NFS等等;不安全信息
Ldap、NIS、rsh等等;不安全验证
1.3 示例:利用telnet协议伪造邮件
vim /etc/postfix/main.cf 修改邮件的配置文件
/interface inet_interfaces = localhost 变为all 把接件人设为所有人
systemctl restart postfix
冒充别人给指定的人发邮件centos7 lyx;telnet
发送方:红色的为操作步骤
[lv@centos7 ~]$ telnet 127.0.0.1 25
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is '^]'.
220 centos7.localdomain ESMTP Postfix
helo m.com
250 centos7.localdomain
mail from:Boss@work.com
250 2.1.0 Ok
rcpt to:lyx
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject:work
Come to the office
.
250 2.0.0 Ok: queued as 722632668DD
quit
221 2.0.0 Bye
Connection closed by foreign host.
接收方:
[lyx@centos7 ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/lisi": 1 message 1 new
>N 1 Boss@work.com Mon Nov 21 21:10 14/447 "work"
& 1
Message 1:
From Boss@work.com Mon Nov 21 21:10:09 2016
Return-Path: <Boss@work.com>
X-Original-To: lyx
Delivered-To: lyx@centos7.localdomain
subject:work
Date: Mon, 21 Nov 2016 21:08:51 +0800 (CST)
From: Boss@work.com
Status: R
Come to the office
&
由此可见,不安全的传统协议是多么的“不靠谱”,所以加密的重要性就无可厚非了,关于密码的定制也是具有一定能够的规格和属性的。
二、安全机制
NIST(美国国家标准与技术研究院)定义的安全属性
1.保密性:数据保密性、隐私性
2.完整性:不可篡改、数据完整性、系统完整性
3.可用性
安全攻击:STRIDE
Spoofing(假冒)、Tampering(篡改)、Repudiation(否认)、Information Disclosure(信息泄露)
Denial of Service(拒绝服务)和Elevation of Privilege(提升权限)
安全机制的方式:
加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公正
安全服务:
认证:ca
访问控制:sudo权限
数据保密性:
连接保密性:vpn
无连接保密性:tcp udp
选择保密性:如工资条的工资
流量保密性:百度推送广告
数据完整性:不可丢包
不可否认性
关于安全机制和安全服务的类别,做了简单的列举,我们在设置安全规则的时候要注意一定的安全基本原则。
设计基本原则
使用成熟的安全系统、“以小人之心度君子之腹”、外部系统都是不安全的!
减少外部接口、最小授权、缺省使用安全模式、安全不是似是而非
从入口处检查、从管理上保护好你的系统、安全算法
常用安全技术:认证、授权、安全通信、审计
密码算法和协议:对称加密、公钥加密、单向加密、认证协议
三、对称加密
对称加密即为加密和解密使用同一个密码– 明文加密(data plain text), 密文加密(cipher text)
加密与解密过程
注:key1=key2
如:A—–B(A传数据给B)
data plain text 代表明文 ; data ‘ cipher text 代表密文
data — 加密 (算法,密钥key1)—-data’(算法,密钥key2)—data key1==key2 对称
3.1 加密算法:
DES (数据加密标准,56bits)
3DES(三重数据加密算法,相当于每个数据块使用三次DES加密算法)
AES (高级加密标准,128bits)
Blowfish,Twofish
IDEA(类似于三重DES)
特性:
加密、解密使用同一个密钥,效率高
将原始数据分割成固定大小的块,逐个进行加密
缺陷:
密钥过多、密钥分发困难、数据来源无法确认
四、非对称加密
非对称加密:基于一对公钥/密钥对,用密钥对中的一个加密,另一个解密。
公钥加密:密钥成对出现
公钥(public key):公开给所有人、私钥(secret key):自己留存,必须保证其私密性;
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然。
功能:
数字签名:主要在于让接收方确认发送方身份
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
数据加密:适合加密较小数据
缺点:密钥长,加密解密效率底下
算法:
RSA(加密,数字签名)
DSA(数字签名)
ELGamal
4.1 实现加密
接收者:生成公钥/密钥对:P和S;公开公钥P,保密私钥S
发送者:使用接收者的公钥来加密消息M,将P(M)发送给接收者
接收者:使用密钥S来解密:M=S(P(M))
示例: cat /root/.ssh/known_key:ssh远程链接的公钥
cat /etc/ssh/ssh_host_rsa_key:ssh远程链接的私钥
data — 加密 (算法,密钥key1)—-data’(算法,密钥key2)—data key1!=key2 非对称
A——B(主机A加密数据传给主机B)
A:public key,Pa ;secret key Sa :生成A的公钥私钥
B:public key,Sa ;secret key Sb :生成B的公钥私钥
public key 加密,只能用对应的另一把secret key 解密,反之,一样
即:对于A:Pa加密 ,对于B:只能拿Sa解密; 对于B:Sa加密,对于A:只能拿Pa解密
A——-B(A手中有B的公钥或者私钥) Sa——-Sb Public b(data)=data’
A加密邮件传给B;A只有B的公钥,只能加密,但是不能解密
4.2 实现数字签名
发送者:生成公钥/密钥对:P和S;公开公钥P,保密密钥S,使用密钥S来加密消息M,发送给接收者S(M)
接收者:使用发送者的公钥来解密M=P(S(M)),结合签名和加密,分离签名获得消息。
数字签名,拿A的私钥加密,B,C,D…都只能拿A的公钥解密,这样也确定了是A发送的加密信息
比如:Sa(data)=data’=Pa(dara)拿A的私钥给data加密,即 数字签名
非对称式加密效率太低,因而不太适合加密大量的数据
示例:A—-B:要求传送过程不被人截获,也不能破解 1k的数据
A加密:Pb[Sa(data)]:先拿A的私钥给data加密,实现数字签名,再那B的公钥加密
B解密:Sb{Pa[Pb[Sa(data)]]}:先用B的私钥加密得到A的私钥加密的数据,再拿A的公钥解密
这样也就知道数据是A 那儿传输过来的
五、散列算法(单项散列)
散列算法:哈希算法(对数据进行加密成固定的字符串)
将任意数据大小缩减成固定大小的“指纹”或者摘要 (digest)
特性:任意长度输入、固定长度输出
若修改数据,指纹(摘要)也会改变、无法从指纹中重新生成;数据内容不变,对应的指纹(摘要)不会变动。
md5sum f3 > f3.md5 cat f3.md5 md5sum –check f3.md5(查看数据是否改变)
无法从指纹中重新生成数据(“单向”)即得到摘要,不可反推原数据
功能:保证数据完整性
常见算式
md5: 128bits 、sha1: 160bits 、sha224 、sha256 、sha384 、sha512
5.1 md5sum检查完整性
md5sum | sha1sum [ –check ] file :检查数据的完整性;hash值是否一样
rpm -V package :比对下载的软件是否为正版
openssl、gpg
示例 :若修改数据,指纹也会改变
[root@centos7 testdir]# ll
总用量 8
-rw-r–r– 1 root root 6 11月 23 23:39 f1
-rw-r–r– 1 root root 3 11月 23 23:39 f2
[root@centos7 testdir]# md5sum f1 f2
b1946ac92492d2347c6235b4d2611184 f1
764efa883dda1e11db47671c4a3bbd9e f2
[root@centos7 testdir]# echo >> f1
[root@centos7 testdir]# md5sum f1 f2
14e273e6f416c4b90a071f59ac01206a f1
764efa883dda1e11db47671c4a3bbd9e f2
可发现向f1文件中追加一个换行符,f1的“指纹”就发生了改变,f2未改动则“指纹不变”
校验:
[root@centos7 testdir]# md5sum f1 > f1.md5
[root@centos7 testdir]# md5sum –check f1.md5
f1: 确定
[root@centos7 testdir]# echo ' ' >> f1
[root@centos7 testdir]# md5sum –check f1.md5
f1: 失败
md5sum: 警告:1 个校验和不匹配
5.2 hash加密示例
A—-B:要求传送过程不被人截获,也不能破解 100M的数据
A加密:Pb{100Mdata+Sa[hash(data)]} 设:{100Mdata+Sa[hash(data)]}==x
先对100Mdata进行hash算法,在用A的私钥加密,即数字签名,随后附加到100M的数据后面,
再用B的公钥进行加密,就相当于只用B的公钥加密了一次
B解密:Sb x –> 100Mdata+Sa[hash(data1)] Pa{Sa[hash(data)} —>hash(data1) hash(100Mdata)?==hash(data1)
B先用私钥进行加密,就能得到100M和附加之后A的私钥签名以及数据的hash至,再用A的公钥解 密得到A的签名(知道是A的签名);再用同一种hash运算加密100M数据,用md5sum | sha1sum [ –check ] file,来检验hash值是否一样,md5sum 100Mdata;cat hash(data1)从而保证数据的完整性。
上述是非对称式加密相当于只加密一次(用Sb解密Pb)
更进加密方式:
A加密:key{100Mdata+Sa[hash(data)]}+Pb(key)
此为对称式加密和非对称式加密结合,速度快,效率高;先用B的公钥加密key(对称式加密的密码),再用对称式加密key加密数据。
5.3 密钥交换算法
密钥交换:IKE( Internet Key Exchange)解决对称式密钥的交换,即公用一个key
公钥加密:DH (Deffie-Hellman)
DH:
A:a,p协商生成公开的整数a,大素数p; B:a,p
A:生成隐私数据:x (x<p ),计算得出a^x%p,发送给B;
B:生成隐私数据:y,计算得出a^y%p,发送给A
A:计算得出(ay%p)x = a^xy%p,生成为密钥;
B:计算得出(ax%p)y = a^xy%p, 生成为密钥;
这样A、B得到的密钥都为a^xy%p,就能实现数据加密
六、PKI和CA证书
6.1 PKI;CA基本概念
PKI: 公钥基础设施(Public Key Infrastructure);是一种遵循标准的利用公钥加密技为电子商务的开展提供一套安全基础平台的技术和规范。PKI体系结构采用证书管理公钥,通过第三方的可信机构CA,把用户的公钥和用户的其他标识信息捆绑在一起,在Internet网上验证用户的身份,PKI体系结构把公钥密码和对称密码结合起来,在Internet网上实现密钥的自动管理,保证网上数据的机密性、完整性。
CA: CA(Certificate Authority),是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
签证机构:CA(Certificate Authority)
注册机构:RA
证书吊销列表:CRL
X.509:定义了证书的结构以及认证协议标准;
包含有:版本号、序列号、签名算法、颁发者、有效期限、主题名称、主体公钥、CRL分发点、扩展信息
发行者签名、证书获取
证书类型:证书授权机构的证书、服务器、用户证书
获取证书的两种方法:
1、使用证书授权机构
生成签名请求(csr) 、将csr发送给CA 、从CA处接收签名
2、自签名的证书:即自己签发自己的公钥
证书申请验证过程:
申请证书方申请证书时,需要按规定填写申请表以及生成密钥提交申请,CA签署后发回给申请者;CA的证书是属于自签证书。 在互相得到了证书后,到CA获取公钥进行解密,解密成功可证实对方身份,之前还需要进行核实证书的有效期限和是否被吊销等信息。
6.2 安全协议SSL/TLS
SSL:Secure Socket Layer 安全套接层
TLS:Transport Layer Security 传输层安全:对数据进行加密
RFC:最新最全的网络细节
功能:机密性,认证,完整性,重放保护(被截获的数据重新发送)
两阶段的协议,分为握手阶段和应用阶段:
握手阶段(协商阶段): 客户端和服务器端认证对方身份(依赖PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret 生成。
应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信。
两阶段的协议又包括:
Handshake 协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换
ChangeCipherSpec 协议:一条消息表明握手协议已经完成
Alert协议:对握手协议中一些异常的错误提醒,分为fatal和warning 两个级别,fatal 类型错误会直接中断SSL 链接,而warning 级别的错误SSL 链接仍可继续,只是会给出错误警告。
Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等
HTTPS 协议:就是“HTTP协议”和“SSL/TLS协议”的组合。HTTP over SSL”或“HTTP over TLS”,对http 协 议的文本数据进行加密处理后,成为二进制形式传输。
6.3 openssl
openssl命令:OpenSSL是一个强大的安全套接字层密码库;开源项目,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
三个组件:
openssl:多用途的命令行工具
libcrypto:加密算法库
libssl: 加密模块应用库,实现ssl及tls
两种运行模式:交互模式和批处理模式
直接输入openssl回车进入交互模式
输入带命令选项的openssl进入批处理模式。
6.3.1对称加密算法
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。 这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。
工具: openssl enc, gpg
加密:
[root@centos7 testdir]# openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
enter des-ede3-cbc encryption password:
Verifying – enter des-ede3-cbc encryption password:
解密:
[root@centos7 testdir]# openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile1
enter des-ede3-cbc decryption password:
6.3.2 非对称加密算法
OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
信息摘要算法 OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。
工具:md5sum, sha1sum,sha224sum.sha256sum… openssl dgst
用SHA1算法计算文件file.txt的哈希值,输出到stdout:
# openssl dgst -sha1 file.txt
用SHA1算法计算文件file.txt的哈希值,输出到文件digest.txt:
# openssl sha1 -out digest.txt file.txt
6.3.4生成用户密码
openssl passwd -1 -salt SALT(最多8位)
passwd命令:man sslpasswd
[root@centos7 ~]# openssl passwd -1 -salt lyx
Password:
$1$centos$Sm4Goo.NmvaS9rG86gpF01
6.3.5生成随机数(man sslrand)
openssl rand -base64 | -hex NUM
NUM: 表示字节数;-hex 时,每个字符4 位,出现的字符数为NUM*2
tr -dc A-Za-z0-9_ < /dev/urandom|head -c 20|xargs
6.3.6 生成密钥对(man genrsa)
openssl rsa -in PRIVATEKEYFLE -pubout -out PUBLICKEYFILE
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
生成密钥
[root@centos7 ~]# (umask 077; openssl genrsa -out key.pem -passout pass:centos -des 2048 )
Generating RSA private key, 2048 bit long modulus
………+++
……………………………………….+++
e is 65537 (0x10001)
从私钥中提取公钥
[root@centos7 ~]# openssl rsa -in key.pem -passin pass:centos -pubout -out pubkey.pem
writing RSA key
随机数生成器:伪随机数字
键盘和鼠标、块设备中断
/dev/random:仅从熵池返回随即谁;随机数用尽,阻塞
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞
6.4 证书管理
证书申请及签署步骤:
1、生成申请请求 2、RA核验 3、CA签署 4、获取证书 5、创建CA和申请证书
6.4创建私有CA
openssl的配置文件:/etc/pki/tls/openssl.cnf
[root@centos7 ~]# vim /etc/pki/tls/openssl.cnf
[ CA_default ]
dir = /etc/pki/CA # 工作目录
certs = $dir/certs # 签署文件证书目录
crl_dir = $dir/crl # 吊销列表
database = $dir/index.txt # 数据库索引文件
#unique_subject = no #
#
new_certs_dir = $dir/newcerts # 当前签署的证书目录
certificate = $dir/cacert.pem # CA自身的证书
serial = $dir/serial # 当前签署的证书编号
crlnumber = $dir/crlnumber # 吊销列表编号
#
crl = $dir/crl.pem # 当前使用的crl
private_key = $dir/private/cakey.pem # CA的私有KEY
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
配置文件中可以看到定义CA的默认属性;了解属性后即可配置CA
6.4.1创建所需要的文件
[root@centos7 ~]# cd /etc/pki/CA/
[root@centos7 CA]# touch index.txt
[root@centos7 CA]# echo 01 > serial (生成序列号)
6.4.2 CA自签证书
6.4.2.1生成私钥
#cd /etc/pki/CA/
[root@centos7 CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
……………+++
……………………………………..+++
e is 65537 (0x10001)
注意()表示里面修改的umask值,只对括号里面的私钥文件有效
#cd /etc/pki/CA/private
#ll cakey.pem ;cat cakey.pem(查看生成的私钥)
6.4.2.2生成自签证书
[root@centos7 CA]# openssl req -new -x509 -key private/cakey.pem -days 365 -out cacert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
—–
Country Name (2 letter code) [XX]:CN #国家名称(2字母代码)
State or Province Name (full name) []:beijing #州或省名称(全名)
Locality Name (eg, city) [Default City]:haidian #地区名称(如城市)(默认城市)
Organization Name (eg, company) [Default Company Ltd]:linux #组织名称(如公司)(默认有限公司)
Organizational Unit Name (eg, section) []:centos #组织单元名称(例如,部门)
Common Name (eg, your name or your server's hostname) []:ca.linux.com #常见的名字(例如你的名字或你 的服务器的主机名)
Email Address []:ca@linux.com #邮件地址
注:命令选项释义
-new: 生成新证书签署请求
-x509: 专用于CA生成自签证书
-key: 生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径
6.4.3颁发证书
在需要使用证书的主机生成证书请求;
示例:HTTPS的实现
1.给web服务器生成私钥
[root@lv-6 ~]# mkdir /etc/httpd/ssl
[root@lv-6 ~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
Generating RSA private key, 2048 bit long modulus
…………………………………………………….+++
………………………………..+++
e is 65537 (0x10001)
[root@lv-6 ~]# ll /etc/httpd/ssl/
总用量 4
-rw——- 1 root root 1675 11月 24 15:47 httpd.key
2.生成证书申请文件
[root@lv-6 ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
—–
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:haidian
Organization Name (eg, company) [Default Company Ltd]:linux
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:lv.linux.com
Email Address []:lv@linux.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#与CA上证书生成是差不多的,区别在于主机名和多了个密码,密码这里留空
#由于是内部使用,注意:默认国家,省,公司名称必须和CA一致
3.将证书请求文件传输给CA
#在CA主机上/etc/pki/下创建用于存储审核文件的目录
[root@centos7 CA]# mkdir /etc/pki/sign
[root@centos7 CA]# cd /etc/pki/sign
#将文件传输给CA
[root@lv-6 ~]# scp /etc/httpd/ssl/httpd.csr 172.16.254.254:/etc/pki/sign
root@172.16.254.254's password:
httpd.csr 100% 1045 1.0KB/s 00:00
CA签署证书,并将证书颁发给请求者;
[root@centos7 sign]# openssl ca -in httpd.csr -out httpd.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Nov 24 08:08:11 2016 GMT
Not After : Nov 24 08:08:11 2017 GMT
Subject:
countryName = CN
stateOrProvinceName = Beijing
organizationName = linux
organizationalUnitName = centos
commonName = lv.linux.com
emailAddress = lv@linux.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
45:BE:5E:35:36:07:2D:6F:F5:1B:84:7B:A0:49:D4:2F:C3:08:63:0C
X509v3 Authority Key Identifier:
keyid:6F:BD:95:95:1C:69:CF:C5:D4:9B:09:39:83:7F:F9:AD:21:C3:3A:B5
Certificate is to be certified until Nov 24 08:08:11 2017 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
# 将证书颁发给请求者
[root@centos7 sign]# scp httpd.crt 172.16.54.54:/etc/httpd/ssl/
The authenticity of host '172.16.54.54 (172.16.54.54)' can't be established.
ECDSA key fingerprint is cc:6d:c9:4a:8f:78:7a:b7:87:01:6d:c8:2d:28:cd:26.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.54.54' (ECDSA) to the list of known hosts.
root@172.16.254.254's password:
httpd.crt 100% 4593 4.5KB/s 00:00
[root@lv-6 ~]# ls /etc/httpd/ssl/
httpd.crt httpd.csr httpd.key
#请求主机收到证书
查看证书中的信息
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|subject|serial|dates
4、验证
#1.安装mod_ssl模块
[root@lv-6 ~]# yum -y install mod_ssl
#2.编辑ssl的配置文件,定义虚拟主机
[root@lv-6 ~]# vim /etc/httpd/conf.d/ssl.conf
<VirtualHost _default_:443>
DocumentRoot "/var/www/html"
ServerName lv.linux.com:443
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
#3.启动http服务
[root@lv-6 ~]# systemctl start httpd.service
[root@lv-6 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::443 :::*
#4.访问测试
– 需将CA的证书导入到客户端主机,否则CA将不会被信任。
[root@centos7 ~]# cp /etc/pki/CA/cacert.pem /etc/pki/ca-trust/source/anchors/
[root@centos7 ~]# update-ca-trust
[root@centos7 ~]# curl https://lv.linux.com
Hello,I'm lv
至此一个简单的CA以及申请和签署步骤已完成。这种CA一般应用于内部局域网,如大范围使用或专业使用,建议使用OpenCA或者购买专业公司提供的。
6.2.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/ca.crl
查看crl文件:
openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text
原创文章,作者:lyx,如若转载,请注明出处:http://www.178linux.com/62440
评论列表(1条)
文章内容详细,理论与实践完好的结合了起来,行间隔紧凑一点会不会更好看呢?