openssl
加密方式
对称加密
- 对称加密和解密都是使用的同一个密钥
- 将原始数据分割成大小相同的块,逐个进行加密
- 密钥过多,如果10个人需要解密就需要10个密钥
- 数据来源无法确认
- 因为是同一个密钥,所以效率高
非对称加密
- 有公钥和私钥之分,它们总是成对出现
- 公钥公开给所有人,称为public key
- 私钥留给自己,不可公开
- 用公钥加密数据,只能使用与之匹配的私钥解密,反之亦然
- 密钥长,效率低下
A和B如果知道对方的身份就可以这么传,但是不知道双方身份的两个人这么传,就无法保证数据来源的完整性。这时候用上了一个叫数字签名的东西。
单向散列
- 将任意数据缩小成固定大小的“指纹”,
- 任意长度输入
- 固定长度输出
- 若修改数据,指纹也会改变
- 无法从指纹中提取数据,也就是说只能加密,不能解密出数据
现在互联网上的加密方式是将非对称密钥和对称密钥相结合的方式。如下图:
这个图是我之前画的,直接拿过来用了。下面的特征码也就是上面说的指纹。可以使用简单的表示就是:对称密钥(data+发送方私钥(hash(data)))+接收方公钥(对称密钥)
检测文件的完整性
- 被安装的文件
- MD5单向散列
示例:
- MD5单向散列
[root@localhost ~]# md5sum f1 > check.md5
[root@localhost ~]# cat check.md5
7c3d06ba3ba154087cd6012d3e82e153 f1
[root@localhost ~]# md5sum -c check.md5
f1: 确定
# 无修改未报错,如果修改的话就会报错
[root@localhost ~]# echo " " >> f1
[root@localhost ~]# md5sum -c check.md5
f1: 失败
md5sum: 警告:1 个校验和不匹配
gpg
用来对数据进行加密和解密
- 实现对称加密
[root@localhost data]# gpg -c f1
# 输入密码即可
[root@localhost data]# ls
2019-28-22 2019-41-22 f1 f1.gpg
#.gpg就是加密后的数据
- 对称解密
在另一台机器上解密
[root@centos6 data]# gpg -o f1 -d f1.gpg
# -o 解密之后保存的文件,解密时需要输密码
[root@centos6 data]# cat f1
aaa
bbb
ccc
ddd
实现非对称加密
- 在A主机上首先生成密钥对
[root@localhost data]# gpg --gen-key
- 选择何种加密方式
- 选择密钥长度
- 密钥是否过期
- 如果没有问题,y即可
- 需要一个ID号来标示你的密钥,有姓名,邮件。我这里只写了姓名
-
输入密码来保护私钥
-
因为使用的xshell界面,所以没有敲敲键盘等操作,如果你在graphic界面需要这样操作
-
存放位置
[root@localhost ~]# ls .gnupg/
gpg.conf pubring.gpg random_seed S.gpg-agent
private-keys-v1.d pubring.gpg~ secring.gpg trustdb.gpg
# pubring.gpg 公钥 secring.gpg 私钥
查看密钥列表
[root@localhost ~]# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/56D2C2BA 2020-01-02 [有效至:2020-02-01]
uid ydong
sub 2048R/2933302A 2020-01-02 [有效至:2020-02-01]
- 将公钥导出并发送到B机器上
[root@localhost ~]# cat centos6.pubkey
-----BEGIN PGP PUBLIC KEY BLOCK-----
# 导出的是公钥
- 在B机器上也要生成密钥对。centos6需要在图形界面。晃动晃动鼠标,敲敲键盘等等。
[root@livedvd ~]# ls .gnupg/
gpg.conf private-keys-v1.d pubring.gpg pubring.gpg~ random_seed secring.gpg trustdb.gpg
- 将公钥发送至B机器上,并导入到密钥中。两台机器上的用户名不能一致,要不然加密的方式会首先加密本地机器上的。
[root@livedvd data]# gpg --import pubring.gpg
gpg: key 56D2C2BA: public key "ydong" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
[root@livedvd data]# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/085CDD4B 2020-01-03
uid centos6
sub 2048R/5FD998E3 2020-01-03
pub 2048R/56D2C2BA 2020-01-02 [expires: 2020-02-01]
uid ydong
sub 2048R/2933302A 2020-01-02 [expires: 2020-02-01]
- 将B主机上的数据进行加密然后发送到A主机上
[root@livedvd data]# gpg -e -r ydong f1
[root@livedvd data]# ls
f1 f1.gpg
#指明要使用用户名的加密方式
- 在A主机上解密f1.gpg
[root@localhost data]# gpg -d f1.gpg
您需要输入密码,才能解开这个用户的私钥:“ydong”
2048 位的 RSA 密钥,钥匙号 2933302A,建立于 2020-01-02 (主钥匙号 56D2C2BA)
gpg: 由 2048 位的 RSA 密钥加密,钥匙号为 2933302A、生成于 2020-01-02
“ydong”
aaa
bbb
ccc
ddd
# 因为我已经解密过一次,所以不用输入密码,第一次需要输入密码
删除公钥和私钥
[root@localhost data]# gpg --delete-secret-keys ydong
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sec 2048R/56D2C2BA 2020-01-02 ydong
要从钥匙环里删除这把密钥吗?(y/N)y
这是一把私钥!――真的要删除吗?(y/N)y
# 先删除私钥,在删除公钥
[root@localhost data]# gpg --delete-keys ydong
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
pub 2048R/56D2C2BA 2020-01-02 ydong
要从钥匙环里删除这把密钥吗?(y/N)y
[root@localhost data]#
CA
A和B素未谋面,它们之间传递加密的数据时,也收到了各自的公钥,但是它们之间怎么来确认收到的公钥就是对方的呢。CA就是为保证收到的公钥是安全有效的。
这里可以参考之前写的博客,简要叙述下它的申请过程。
- 用户申请:用户获取根CA的数字证书,与安全服务器进行连接;生成自己的公钥和私钥,将公钥和自己的身份信息提交给安全服务器,安全服务器将用户的申请信息传送给RA(注册机构)服务器
- RA审核:RA收到用户的请求,用户向RA表明自己的身份,RA进行核对。如果RA同意用户的申请证书的请求,则对证书申请信息做数字签名;否则拒绝用户的申请。
- CA发行证书:RA将用户申请和RA签名传输给CA,CA对RA数字签名做认证, 如果验证通过,则同意用户请求。颁发证书,然后将证书输出。如果验证不通过,则拒绝证书申请
- RA转发证书:RA从CA得到新的证书,首先将证书输出到LDAP服务器提供目录浏览,再通知用户证书发行成功。告知证书序列号,到指定的网址去下载证书
- 用户证书获取:用户使用证书序列号去指定网址下载自己的数字证书,只有持有与申请时提交的公钥配对的私钥才能下载成功。
用户撤销
- 用户申请:用户向RA发送一封签名加密邮件,申请撤销证书
- RA审核:注册机构同意申请,并对申请签名
- CA更新CRL:CA验证证书撤销请求的RA签名,如果正确,同意请求。更新CRL,并输出
- RA转发CRL:注册中心收到CRL。以多种方式将CRL公布
- 用户告知:用户访问LDAP服务器,下载并浏览CRL
SSL握手机制
TLS是SSL的改良版,经过TLS/SSL的通信,就是加密通信。
首先SSL工作在应用层和传输层之间,说明它可以为许多的应用的提供加密传输。如:http,ftp等等…
1)客户端向服务端发送hello,也就是所谓的向服务器端发送通讯加密的请求。主要向服务器端发送以下信息。
- 支持的协议版本,如:tls1.0
- 一个客户端生成的随机数,稍后用于生成"会话密钥"
- 支持的加密方法,比如RSA公钥加密
- 支持的压缩方法
需要注意的是,这里发送的不包含服务器的 域名,理论上说服务器只能包含一个特定的网站,否则分不清应该向客户端提供哪个网站的数字证书。
于虚拟主机的用户来说,这当然很不方便。2006年,TLS协议加入了一个Server Name Indication扩展,允许客户端向服务器提供它所请求的域名。
2)服务器接受到hello。向客户端回应一个server hello 。也就是响应客户端请求。响应内容包含如下信息
- 确认使用的加密通信版本,如:tls1.0。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信通道
- 一个服务器生成的随机数,稍后用于"会话密钥"
- 确认使用的加密算法,如:RSA公钥加密
- 服务器证书
当然,服务器要想确认用户的身份,就会包含一项请求,让用户提供数字 证书。例如:你使用电脑进行电子银行转账时,会用到一个U盾的东西,而这个东西就是装了数字证书。用来证明你的身份。
3)客户端收到回应后,首先验证服务器的证书,是否为可信的证书以及是否在注销列表中。如果证书不可信,将会提醒当前网站证书不可信,是否继续通信。
如果没有问题,客户端将会提取服务器证书的公钥,然后向服务器发送下面三项信息
- 一个随机数,该随机数用公钥加密,防止被窃听
- 编码变更通知,表示随后的信息都将用双方协定的加密方法发送
- 客户端握手结束通知,表示客户端的握手阶段已经结束,这一项同时也是前面发送所有内容的hash值,用来供服务器校验
上面第一项的随机数,是整个握手阶段出现的第三个随机数,又称"pre-master key"。有了它以后,客户端和服务器就同时有了三个随机数,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把"会话密钥"。
至于为什么一定要用三个随机数,来生成"会话密钥"
"不管是客户端还是服务器,都需要随机数,这样生成的密钥才不会每次都一样。由于SSL协议中证书是静态的,因此十分有必要引入一种随机因素来保证协商出来的密钥的随机性。
对于RSA密钥交换算法来说,pre-master-key本身就是一个随机数,再加上hello消息中的随机,三个随机数通过一个密钥导出器最终导出一个对称密钥。
pre master的存在在于SSL协议不信任每个主机都能产生完全随机的随机数,如果随机数不随机,那么pre master
secret就有可能被猜出来,那么仅适用pre master
secret作为密钥就不合适了,因此必须引入新的随机因素,那么客户端和服务器加上pre master
secret三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了,每增加一个自由度,随机性增加的可不是一。"
openssl
openssl 是 SSL协议的开源项目。有以下三个组成:
- libencrypto库:加密解密库,主要用来实现加密解密
- libssl库:ssl功能库,用于ssl安全机制通信的库
- 上述两种多适用于开发人员
- openssl多用途命令行工具:可以完成上述的两种功能
对称加密
语法:openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-S salt] [-salt]
ciphername:算法支持的有3des,aes,twofish
选项解释:
-in filename :输入的文件,不指认时默认是stdin
-out filename:输出文件,不指定时默认是stdout
-pass arg:传递加、解密时的明文密码。若验证签名时实用的公钥或私钥文件是被加密过的,则需要传递密码来解密。
-e:对输入的文件进行加密。默认就是加密
-d:对输入文件的解密操作,必须显式指定-d才能解密
-a:在加密后和解密前进行base64编码或解密,不指定时默认是二进制。注意,编码不是加解密的一部分,而是加解密前后对数据的格式"整理"
-S salt:不使用salt随机数值,而是自定义salt值,但只能是16进制范围内字符的组合,即"0-9a-fA-F"的任意一个或多个组合
-salt:自动插入一个随机数来为数据加密
示例:
[root@localhost data]# openssl enc -des3 -in f1 -a -salt -out f1.cipher
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
[root@localhost data]# ls
f1 f1.cipher
[root@localhost data]# openssl enc -des3 -d -in f1.cipher -out f1 -salt
enter des-ede3-cbc decryption password:
[root@localhost data]# ls
f1 f1.cipher
[root@localhost data]# cat f1
aaa
vvv
bbb
ccc
单向加密
openssl dgst [-md5|-sha1|...] [-hex | -binary] [-out filename] [-sign filename] [-passin arg] [-verify filename] [-prverify filename] [-signature filename] [file...]
常用选项:
-out filename:指定输出文件,若不指定则输出到标准输出
[-md5|-sha1|-sha|-sha224|-sha256|-sha384|-sha512] :指定一种加密算法
示例:
[root@localhost data]# openssl dgst -md5 f1
MD5(f1)= cd133f4acd261eb83e77ec12d40ca32f
[root@localhost data]# openssl dgst -sha1 f1.cipher
SHA1(f1.cipher)= 73dd921aa45d872f6fbf164f528dc0f210d4d23f
生成用户密码
openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin] [-noverify] [-quiet] [-table] {password}
常用选项:
-crypt:UNIX标准加密算法,此为默认算法。如果加盐(-salt)算密码,只取盐的前2位,2位后面的所有字符都忽略。
-1(数字):基于MD5的算法代号
-salt:加入随机数,最多只能有8位
in file:从文件中读取要计算的密码列表
示例:
[root@localhost ~]# openssl passwd -1 -salt 12345
Password:
$1$12345$2AOr8TLUHxN1WDJHBbOSf1
随机数
openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num
常用选项:
-hex:指定生成的随机数的编码格式为hex。
num:指定随机数的长度。
-base64:指定生成的随机数的编码格式为base64。
示例:
[root@localhost ~]# openssl rand -base64 10
9/ym2U6EVO/gFQ==
[root@localhost ~]# openssl rand -hex 10
b68ca5e5788a2a75b462
生成密钥对
用法:openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [numbits]
#genrsa是生成私钥
常用选项
-out filename :将生成的私钥保存至filename文件,若未指定输出文件,则为标准输出。
numbits :指定要生成的私钥的长度,默认为1024。该项必须为命令行的最后一项参数。
-des|-des3|-idea:指定加密私钥文件用的算法,这样每次使用私钥文件都将输入密码,太麻烦所以很少使用。
-passout args :加密私钥文件时,传递密码的格式,如果要加密私钥文件时单未指定该项,则提示输入密码。
示例:
[root@localhost ~]# (umask 066;openssl genrsa -des3 -out private_key 2048)
Generating RSA private key, 2048 bit long modulus
................................................................................+++
......................+++
e is 65537 (0x10001)
Enter pass phrase for private_key:
Verifying - Enter pass phrase for private_key:
[root@localhost ~]# ll private_key
-rw------- 1 root root 1743 1月 4 01:12 private_key
私钥一定要只能自己写,别人不可以。
从私钥中提取公钥
语法格式:openssl rsa [-in filename] [-passin arg] [-passout arg] [-out filename] [-des|-des3|-idea] [-text] [-noout] [-pubin] [-pubout] [-check]
常用选项:
-in filename:指定密钥输入文件。默认读取的是私钥,若指定"-pubin"选项将表示读取公钥。将从该文件读取密钥,不指定时将从stdin读取
-out filename:指定密钥输出文件。默认输出私钥,若指定"-pubin"或"-pubout"选项都将输出公钥。不指定将输出到stdout。
-pubout :指定该选项时,将显示表明从"-in filename"的filename中提取公钥并输出,所以filename文件必须是私钥文件。
:不指定该选项时,默认输出私钥。当设置了"-pubin"时,默认也设置了"-pubout"。
:私钥文件可以通过文件中的私钥标识符"-----BEGIN PRIVATE KEY-----"和"-----END PRIVATE KEY-----"来辨别。
示例:
[root@localhost ~]# openssl rsa -in private_key -pubout -out public_key
Enter pass phrase for private_key:
writing RSA key
[root@localhost ~]# cat public_key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1N0O1MTKrOjPd1BvIEnF
1Z65SrdJ+IbkpS4r/7wJTtpabkdoA0oobNZScKAlwSv7KVs9UgORdGXy5ADi2GHp
T7o1y686HwS40xHxe8YdOq5kOxWFcanNXBycz0D+mdNfTuQ4Xw8GU/xrRpMz34Au
vGmtpzJfvTXGsuLGL2XzcgyDAyHytGnHk+805MModwqyvQIpHdIyGPhw5DiDSJgj
UmR96OijkxChdXFxZlmYA3r8Uk5Mp4XmiZd4e1GY5/6pKYtjDK6HT3J81fPPUdVS
Ibz6l/oZrDIUfgABjp8jxNJuzakE/ayxbwpXz4Kuue1fYzTL5FkJfxzgC78EBxLc
3wIDAQAB
-----END PUBLIC KEY-----
构建私有CA
配置文件:/etc/pki/tls/openssl.cnf
该文件主要设置了证书请求、签名、crl相关的配置。主要相关的伪命令为ca和req。对于x509不用该配置文件。
该文件从功能结构上分为4个段落:默认段、ca相关的段、req相关的段、tsa相关的段。每个段中都以name=value的格式定义。
该文件中没有被引用的段被视为忽略段,不会起到任何作用。
每个段中可以书写哪些name以及它们的意义,可以man相关命令,如man ca可以查看ca相关段可以书写的name,man req可以查看req相关段可以书写的name
其中重要就是生成private_key和CA的自签证的文件名称要和配置文件中的名称一致
40 [ CA_default ]
41
42 dir = /etc/pki/CA # Where everything is kept CA的主目录
43 certs = $dir/certs # Where the issued certs are kept 已签发的证书存放处
44 crl_dir = $dir/crl # Where the issued crl are kept 吊销存放处
45 database = $dir/index.txt # database index file. 数据索引文件,可以为空
46 #unique_subject = no # Set to 'no' to allow creation of
47 # several ctificates with same subject.
# 设置为yes则database文件中的subject列不能出现重复值
# 即不能为subject相同的证书或证书请求签名
# 建议设置为no,但为了保持老版本的兼容性默认是yes
48 new_certs_dir = $dir/newcerts # default place for new certs. 放签证的序列号
49
50 certificate = $dir/cacert.pem # The CA certificate CA的自签证证书名称
51 serial = $dir/serial # The current serial number 当前序列号,必须写入数字
52 crlnumber = $dir/crlnumber # the current crl number 当前crl序号
53 # must be commented out to leave a V1 CRL
54 crl = $dir/crl.pem # The current CRL 当前crl
55 private_key = $dir/private/cakey.pem# The private key CA密钥名称
56 RANDFILE = $dir/private/.rand # private random number file 提供随机数种子的文件
57
58 x509_extensions = usr_cert # The extentions to add to the cert 添加到整数的扩展项
示例:
1)生成CA自己的密钥
[root@localhost ~]# (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
...................+++
.................................+++
e is 65537 (0x10001)
[root@localhost ~]# ll /etc/pki/CA/private/
总用量 4
-rw------- 1 root root 1679 1月 4 09:45 cakey.pem
# 注意 私钥一定要设置成只能自己读写,别人都不能读写
2)生成CA自签证书
[root@localhost ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/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 #国家
State or Province Name (full name) []:beijing #城市
Locality Name (eg, city) [Default City]:beijing #市县级
Organization Name (eg, company) [Default Company Ltd]:magedu # 公司名称
Organizational Unit Name (eg, section) []:ops #部门名称
Common Name (eg, your name or your server's hostname) []:ydong.com #名称
Email Address []:
在B机器上生成需要向CA申请的签证
3)在B机器上生成密钥
[root@centos6 app]# (umask 066;openssl genrsa -out app.key 1024)
Generating RSA private key, 1024 bit long modulus
...............++++++
................++++++
e is 65537 (0x10001)
[root@centos6 app]# ll
总用量 4
-rw-------. 1 root root 887 1月 4 17:52 app.key
4)生成自签证书
[root@centos6 app]# openssl req -new -key app.key -out app.csr -days 30
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]:beijing
Organization Name (eg, company) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:ops
Common Name (eg, your name or your server's hostname) []:www.ydong.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
5)将生成好的.csr文件传送到CA服务器上,并进行签证审核
[root@localhost ~]# ls /tmp/app
app.csr
[root@localhost ~]# openssl ca -in /tmp/app/app.csr -out /etc/pki/CA/certs/app.crt
Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/index.txt: No such file or directory
unable to open '/etc/pki/CA/index.txt'
140692209432464:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/etc/pki/CA/index.txt','r')
140692209432464:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:
# 缺少index.txt的报错情况
[root@localhost ~]# openssl ca -in /tmp/app/app.csr -out /etc/pki/CA/certs/app.crt
Using configuration from /etc/pki/tls/openssl.cnf
/etc/pki/CA/serial: No such file or directory
error while loading serial number
140643845851024:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/etc/pki/CA/serial','r')
140643845851024:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:
#缺少serial的报错
[root@localhost ~]# echo 01 > /etc/pki/CA/serial
审核
[root@localhost ~]# openssl ca -in /tmp/app/app.csr -out /etc/pki/CA/certs/app.crt
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: Jan 4 02:05:58 2020 GMT
Not After : Jan 3 02:05:58 2021 GMT
Subject:
countryName = CN
stateOrProvinceName = beijing
organizationName = magedu
organizationalUnitName = ops
commonName = www.ydong.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
37:40:21:60:9D:33:16:3E:40:AF:E5:36:45:B2:3F:E4:6F:63:48:1A
X509v3 Authority Key Identifier:
keyid:44:A3:77:F7:7F:8E:5D:85:10:D9:6A:9A:F8:68:41:9B:B6:E3:48:55
Certificate is to be certified until Jan 3 02:05:58 2021 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@localhost ~]# ll /etc/pki/CA/certs/
总用量 4
-rw-r--r-- 1 root root 3693 1月 4 10:06 app.crt
6)用windows查看签证情况
安装证书即可
查看颁发成功的证书,由于颁发时没有指定days,所以显示一年。默认的/。
7)linux查看签证
[root@localhost CA]# openssl x509 -in certs/app.crt -text
吊销证书
1)在客户端获取要吊销的证书的serial
[root@localhost app]# openssl x509 -in app.crt -serial -noout -subject
serial=01
subject= /C=CN/ST=beijing/O=magedu/OU=ops/CN=www.ydong.com
2)在CA服务器上根据客户提交的序列号以及subject进行比对,是否与index.txt信息一致。没有问题就吊销证书
[root@localhost CA]# openssl ca -revoke newcerts/01.pem
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 01.
Data Base Updated
3)指定第一个吊销证书的编号。注意:第一次更新证书吊销列表前,才需要执行
[root@localhost CA]# echo 01 > crlnumber
4)更新证书吊销列表
[root@localhost CA]# openssl ca -gencrl -out crl.pem
Using configuration from /etc/pki/tls/openssl.cnf
5)查看证书吊销列表
[root@localhost CA]# openssl crl -in crl.pem -text -noout