openssl

加密方式

对称加密

  • 对称加密和解密都是使用的同一个密钥
  • 将原始数据分割成大小相同的块,逐个进行加密
  • 密钥过多,如果10个人需要解密就需要10个密钥
  • 数据来源无法确认
  • 因为是同一个密钥,所以效率高

非对称加密

  • 有公钥和私钥之分,它们总是成对出现
  • 公钥公开给所有人,称为public key
  • 私钥留给自己,不可公开
  • 用公钥加密数据,只能使用与之匹配的私钥解密,反之亦然
  • 密钥长,效率低下
    在这里插入图片描述

A和B如果知道对方的身份就可以这么传,但是不知道双方身份的两个人这么传,就无法保证数据来源的完整性。这时候用上了一个叫数字签名的东西。

在这里插入图片描述

单向散列

  • 将任意数据缩小成固定大小的“指纹”,
  • 任意长度输入
  • 固定长度输出
  • 若修改数据,指纹也会改变
  • 无法从指纹中提取数据,也就是说只能加密,不能解密出数据

现在互联网上的加密方式是将非对称密钥和对称密钥相结合的方式。如下图:
这个图是我之前画的,直接拿过来用了。下面的特征码也就是上面说的指纹。可以使用简单的表示就是:对称密钥(data+发送方私钥(hash(data)))+接收方公钥(对称密钥)
在这里插入图片描述

检测文件的完整性

  • 被安装的文件
    • 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值