墨菲定律

  1. 准备工作:

linuxer

墨菲定律:一种心理学效应,是由爱德华·墨菲(Edward A. Murphy)提出的,

准备一台ubuntu机器,将boot.img复制到该机器上,下载必要的工具
sudo apt-get install abootimg
git clone
cd android-simg2img
make
sudo cp simg2img /usr/bin

案例

比如内核的如下commit引入了一个严重的安全漏洞(编号CVE-2017-5123):
图片 1

原话:如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导

  1. 解压缩boot镜像
    abootimg -x boot.img
    mkdir ramdisk
    cd ramdisk
    gunzip -c ../initrd.img | cpio -i

  2. 修改default.prop文件,使得
    ro.secure=0
    ro.debuggable=1

  3. 修改init.rc,使得
    on property:ro.debuggable=1
    start console

危害

一个攻击案例可以参考:
freebuf
《Linux内核Waitid系统调用本地提权漏洞(CVE-2017-5123)的分析与利用》

致灾难,则必定有人会做出这种选择

service adbd /sbin/adbd
class core
socket adbd stream 660 system system
disabled
seclabel u:r:su:s0

修复

而内核的这个commit对其进行了修复:
图片 2

主要内容:

on post-fs
# once everything is setup, no need to modify /
mount rootfs rootfs / rw remount

任何事都没有表面看起来那么简单

  1. 修改fstab.freescale,使得挂载权限可写
    /dev/block/mmcblk0p5 /system ext4 rw wait

  2. 重新打包ramdisk文件
    cd ramdisk/
    find . | cpio –o –H newc | gzip > ../new-ramdisk.img

  3. 生成新的boot.img
    由于解压缩后再打包,new-randisk.img文件大小会与原来的initrd.img大小不同,
    如果比原来大,需要重新设置boot.img的大小,
    查看原来的大小
    cat bootimg.cfg,
    第一行是原来的boot.img的大小,
    使用ls -l 查看initrd.img和new-ramdisk.img两个文件的大小,
    在原来boot.img的大小基础上加上两个文件的大小差(NEWSIZE-BYTES),注意增加的字节数最好是block的整数倍,例如4096字节等等。
    然后使用命令生成新的镜像:
    abootimg –create new-boot.img -f bootimg.cfg -k zImage -r
    new-ramdisk.img -c “bootsize=NEWSIZE-BYTES”

  4. 将生成的new-boot.img作为boot.img重新刷入开发板,
    重启后进入系统,system分区变成可写了。

所有的事都会比你预计的时间长

会出错的事总会出错

如果你担心某种情况发生,那么它就更有可能发生

 

安全机制

信息安全防护的目标

保密性 Confidentiality

完整性 Integrity:数据确定完好,不能被篡改

可用性
Usability:read5(高可用性)系统的总体运行时间占全部时间的百分比,百分比越
高,可用性越高,百分比按年计算,%99.9 当机10小时

可控制性Controlability

不可否认性 Non-repudiation

安全防护环节

物理安全:各种设备/主机、机房环境

系统安全:主机或设备的操作系统

应用安全:各种网络服务、应用程序 (文件共享)

网络安全:对网络访问的控制、防火墙规则(iptables -vnL iptables -F)

数据安全:信息的备份与恢复、加密解密

管理安全:各种保障性的规范、流程、方法

安全攻击:
STRIDE

1 Spoofing 假冒 (钓鱼网站,可以通过看域名辨别)

2 Tampering 篡改 (发邮件给tom mail -s test tom
.或者ctrl+d保存退出邮件,,)

3 Repudiation 否认

4 Information Disclosure 信息泄漏

Denial of Service 拒绝服务DDOS攻击 ping -f(尽对方cpu所能去ping对方)-s
34428 5
ddos”分布式攻击”,网络黑客发送大量的访问请求,耗尽资源,网络对方无法进行服务

6 Elevation of Privilege 提升权限(把普通用户的权限设置为管理员权限)

centos5上:1:useradd wang 2:su – wang

安全设计基本原则

1 使用成熟的安全系统 :

2 以小人之心度输入数据
:用户输入的数据有可能是错误的数据,绕过密码的检查

select *(*表示所有字段) from user (查询user表中有没有用户账号)

SQL(注入攻击)where username=‘toot’ and(shall中的&&) password=‘ ’ or
‘1’ = ‘1’

username=root

password=magedu (只要一个为真全为真)

password= ‘ or(shall中的或) ‘ 1’ = ‘ 1 ’
(构造了一个奇怪的口令绕过密码检查)

3 外部系统是不安全的,防火墙:非军事化区(DMZ) 军事化区:严禁外部访问

防水墙:防止企业内部安全的攻击,拒接用户随意的访问企业内部

4 最小授权,

5 减少外部接口

6 缺省使用安全模式:考虑使用SElinux

7 安全不是似是而非

8 从STRIDE(攻击方式)思考

9 在入口处检查:如地铁的入口检查

10 从管理上保护好你的系统

安全算法 3A(认证,授权,审计)

常用安全技术

认证 :验证身份方法:用户名,口令等

授权 :用户账号不一样授权不一样

审计 : 记录和安全相关的操作

安全通信

不安全的传统协议

telnet、FTP、POP3等等;不安全密码

http、smtp、NFS等等;不安全信息

Ldap、NIS、rsh等等;不安全验证

密码算法和协议:

对称加密

公钥加密

单向加密

认证协议

对称加密算法

对称加密:加密和解密使用同一个密钥 key1=key2

eg:A (data) 明文 key1 (data)
密文 ——–(传输) —— key2( key1 (data)) B

DES:Data Encryption Standard(数据加密标准),56bits(56位)

补充:ascii码:把所有的数字或字母,符号等编写为ascii码,转化为二进制使得计算机识别

3DES: DES加密3次

AES:Advanced(高级) (128, 192, 256bits)主流的加密

Blowfish,Twofish (商业算法)

IDEA,RC6,CAST5

特性:

1、加密、解密使用同一个密钥,效率高,适合加密大量的数据

2、将原始数据分割成固定大小的块,逐个进行加密

缺陷:

1、密钥过多

2、密钥分发

3、数据来源无法确认:(可能会收到假冒的加密数据)

非对称加密算法

非对称加密算法 key1 ! = key2
安全通行,数据来源确认

public key
(公钥,公开,到处发放) A pa sa

secret key (私钥,私有的) B pb sb

eg 1A用
{pb加密(data)}——(传输) —– B用sb解密(data)

eg 2 Alice 发送
BOb

基于一对公钥/密钥对,
用密钥对中的一个加密,另一个解密

• 接收者BOb

生成公钥/密钥对:P和S

公开公钥P,保密密钥S

• 发送者 Alice

使用接收者的公钥来加密消息M

将P(M)发送给接收者

• 接收者BOb

使用密钥S来解密:M=S(P(M))

Alice :Pa公钥,Sa私钥

BOb :Pb公钥,Sb私钥

加密(Pb)——解密(Sb) Alice 发送 BOb ,,BOb只能解密,其他解不了

加密(Sa)——解密(Pa) Alice 发送 多用户 ,,判断出发出数据这是谁

公钥加密:密钥是成对出现 拿到公钥是推算不出私钥的,公钥可以通过私钥推出

公钥:公开给所有人;public key

私钥:自己留存,必须保证其私密性;secret key

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

功能:

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

对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方

数据加密:适合加密较小数据

缺点: 密钥长,加密解密效率低下

算法:

RSA(加密,数字签名) DES 加密1G数据 加密完2G 4m
8m

DSA(数字签名) DES 加密1G数据 加密完1G 1m 64小时

ELGamal

eg:,1
确定数据安全的传输对方,确定数据传输的来源,用非对称加密算法实现

Pb {Sa(data})
用sa签名,再用pb加密—–用sb解密后,再用pa解密

eg: 2
确定数据安全的传输对方,确定数据传输的来源,用组合加密算法实现

key(data+Sa(data))+pb(key) 解释:

1 A用
key(data)对称秘钥加密+pb(key)再用B的公钥加密key,B用私钥解密key,得到数据

1
再用A的公钥解密数据,在和解密Key的数据进行比对,确认数据的来源

实现数字签名:(只要用私钥加密就是数字签名)

• 发送者

生成公钥/密钥对:P和S

公开公钥P,保密密钥S

使用密钥S来加密消息M

发送给接收者S(M)

• 接收者

使用发送者的公钥来解密M=P(S(M))

结合签名和加密

分离签名

单向散列(hash运算)数据不一样,hash值不同,实现数据的完整性检验

将任意数据缩小成固定大小的“指纹”

• 任意长度输入

• 固定长度输出

• 若修改数据,指纹也会改变(“不会产生冲突”)

• 无法从指纹中重新生成数据(“单向”)

功能: 数据完整性检验

常见算式 https://mirrors.aliyun.com

md5: 128bits、sha1: 160bits、sha224sum,sha256、sha384、sha512

 

图片 3

 

进行下面的数据比较得到数据完整性的校验

图片 4

 

图片 5

eg: md5sum /etc/fstab /etc/passwd >
md5.log”将多个文件保存到一个文件中”

md5sum –check md5sum -C md5.log :保存文件的hash值确认数据有没有改变

md5.log

将现有的文件和已经存好的文件进行比对,出现ok数据就没有被改过

常用工具

• md5sum | sha1sum [ –check ] file

• openssl、gpg

• rpm -V

eg:实现对称,非对称,hash,进行加密:如下:1身份验证,2数据安全

key(data+Sa{hash(data)})+Pb(key)

1
:A用对称加密算法,进行签名并做hash运算,再用B的公钥加密key

2: B用自己的公钥解开key得到:
(data+Sa{hash(data)})

3:用A的公钥解密得到hash(data)
再用原数据data做hash运算两者进行比较,确定数据

的来源,如果两者数据一样。,那就确认数据包的来源是A

图片 6

 

密钥交换

密钥交换:IKE( Internet Key Exchange )

公钥加密:

DH (Deffie-Hellman):生成会话密钥,由惠特菲尔德·迪菲(Bailey

Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年发表,参

看如下:

DH:

A: g,p 协商生成公开的整数g, 大素数p

B: g,p

A:生成隐私数据 :a (a<p ),计算得出 g^a%p,发送给B

B:生成隐私数据 :b,计算得出 g^b%p,发送给A

A:计算得出 [(g^b%p)^x] %p = g^ab%p,生成为密钥

B:计算得出 [(g^a%p)^y] %p = g^ab%p,生成为密钥

应用程序:RPM

文件完整性的两种实施方式

被安装的文件

• MD5单向散列

• rpm –verify package_name (or -V) rpm
-V检验数据包的每个文件,每次用rpm安装的包,每个数据包的文件的hash值或者初始值存在数据库中,过段时间,用-V检查数据库中得的每个文件的hash值,比对当前文件的hash值,如果不一样,就会报提示:

图片 7

发行的软件包文件

• GPG公钥签名

• rpm –import(导入公钥) /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*

• rpm –checksig pakage_file_name (or -K) rpm -k 检验数据包的每个文件

使用gpg实现对称加密

对称加密file文件

cp /etc/fstab /app/f1/

gpg -c file

ls file.gpg

在另一台主机上解密file

gpg -o file -d file.gpg

实验: 1:[root@centos7 ~]# cd /data

2:[root@centos7 /data]# cp /etc/fstab .

3:[root@centos7 /data]# gpg -c fstab 加密数据

输入口令

4:[root@centos7 /data]# ll

total 8

-rw-r–r–. 1 root root 541 Jul 9 21:23 fstab

-rw-r–r–. 1 root root 311 Jul 9 21:25 fstab.gpg

5:[root@centos7 /data]# scp fstab.gpg 192.168.1.8:
发送加密的数据到另一主机

图片 8

 

6:[root@centos6 ~]# file fstab.gpg 产看文件类型,格式

fstab.gpg: data

7:[root@centos6 ~]# gpg -d fstab.gpg 解密

8:[root@centos6 ~]# gpg -o fstab fstab.gpg
(-0相当于重定向,生成文件)

图片 9

 

使用gpg工具实现公钥加密

在hostB主机上用公钥加密,在hostA主机上解密

在hostA主机上生成公钥/私钥对

gpg –gen-key

在hostA主机上查看公钥

cd .gnupg/ 查看生成的公钥

gpg –list-keys

在hostA主机上导出公钥到wang.pubkey

gpg -a –export -o wang.pubkey

从hostA主机上复制公钥文件到需加密的B主机上

scp wang.pubkey hostB: 如:scp wang.pubkey 172.18.56.56:/app/f1

在需加密数据的hostB主机上生成公钥/私钥对

gpg –list-keys

gpg –gen-key

在hostB主机上导入公钥

gpg –import wang.pubkey

gpg –list-keys

用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg

gpg -e -r wangxiaochun file -e表示加密 -r:用谁的公钥加密

file file.gpg

使用gpg工具实现公钥加密

复制加密文件到hostA主机

scp fstab.gpg hostA:

在hostA主机解密文件

gpg -d file.gpg

gpg -o file(解密的新的文件) -d file.gpg

删除公钥和私钥

gpg –delete-keys wangxiaochun 删除公钥

gpg –delete-secret-keys wangxiaochun 删除私钥

实验1 :[root@centos6 ~]# gpg –gen-key 在centos6上生成秘钥对

Please select what kind of key you want: (那种算法加密,默认RSA)

What keysize do you want? (2048) 1024 (用多少位加密,默认1024)

Key is valid for? (0) (有限期,默认十天)

Real name: wangjin (起一个用户的名字)

Email address: (邮箱)

Comment: (描述)

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o(0确定)

2:输入秘钥:(担心私钥被窃取,地私钥用对称秘钥加密)空口令

3:[root@centos6 ~]# cd ~/.gnupg

4:[root@centos6 ~/.gnupg]# gpg –list -keys (查看生成的公钥)

5: [root@centos6 ~/.gnupg]# gpg -a –export -o wang.pubkey
(-a用ascii码的文本方式导出 -o指定文件名 wang.pubkey 是自己起的文件名)

6:[root@centos6 ~/.gnupg]#scp wang.pubkey 192.168.56.56:
(传到centos7)

7:时间同步

centos6

ntpdate 172.18.0.1

vim /etc/ntp.conf

server 172.18.0.1 iburst

chkconfig ntpd on

service ntpd start

centos7

vim /etc/chrony.conf

systemctl start chronyd

systemctl is-enabled chronyd

systemctl enable chronyd

8:[root@centos7 /data]#cp /root/wang.pubkey .

9:[root@centos7 /data]# gpg -e -r wangjin fstab -e表示加密
-r:用谁的公钥加密

10:[root@centos7 /data]#scp fstab.gpg 192.168.1.8:

11:[root@centos6 ~]#gpg -o -d fstab.gpg 解密生成文件

 

CA和证书
:系统中内置根证书,免费申请证书的网站https://freessl.org

 

图片 10

Base64:A-Z a-z 0-9 + / 共64位

图片 11

 

PKI(公共的秘钥体系 公钥,私钥,证书
实现): Public Key Infrastructure

签证机构:CA(Certificate Authority)
证书颁发机构,证明通讯双方是合法连接的

注册机构:RA

证书吊销列表:CRL

证书存取库:

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

版本号 序列号 签名算法 颁发者 有效期限

主体名称 主体公钥 CRL分发点 扩展信息 发行者签名

 

证书获取

证书类型:

证书授权机构的证书 (CA)

服务器 (淘宝或天猫等,给计算机用)

用户证书 (用户用)

获取证书两种方法:

• 使用证书授权机构

生成签名请求(csr)

将csr发送给CA

从CA处接收签名

• 自签名的证书 (根CA)

自已签发自己的公钥

安全协议 https 底层是依赖LLS协议

1 SSL(SSL协议: 安全套阶层): Secure Socket Layer

TLS: Transport Layer Security

1995:SSL 2.0 Netscape

1996: SSL 3.0

1999: TLS 1.0

2006: TLS 1.1 IETF(Internet工程任务组) RFC 4346

2008:TLS 1.2 当前使用

2015: TLS 1.3

功能:机密性,认证,完整性,重放保护

2 两阶段协议,分为握手阶段和应用阶段

1握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书
进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。

2 应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

 

图片 12

SSL/TLS

Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换

ChangeCipherSpec
协议:一条消息表明握手协议已经完成

Alert
协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告

Record
协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等

HTTPS 协议:就是“HTTP 协议”和“SSL/TLS
协议”的组合。HTTP overSSL”或“HTTP over TLS”,对http
协议的文本数据进行加密处理后,成为二进制形式传输

 

图片 13

 

图片 14

文字描述:client(客户端) server(服务器端) ca

1:https://server (客户端发请求到服务器端)

2:server—–client
(服务器端传自己的证书到客户端用CA的私钥签名服务器的公钥,)

Sca(Pserver)+CA+server+expir (证书签名,包括CA的证书,有效期之类的)

3:client (客户端信任CA,所有提前装系统的时候拿到CA的公钥)

Pca(
Sca(Pserver))(用CA的公钥进行解密)——–Pserver(得到服务器的公钥)

4:client 客户端生成一个随机数 random 12345

5:Pserver(12345)用获取的服务器的公钥把12345进行加密———–server

6:Server(Pserver(12345))(服务器用自己的私钥解密获取12345)

7:client

12345(data)《—–》 服务器端和客户端共同获得12345,以此传输数据

 

OpenSSL

OpenSSL:开源项目

三个组件:

openssl: 多用途的命令行工具,包openssl

libcrypto: 加密算法库,包openssl-libs

libssl:加密模块应用库,实现了ssl及tls,包nss

openssl命令:

两种运行模式:交互模式和批处理模式

openssl version:程序版本号

标准命令、消息摘要命令、加密命令

标准命令:

enc, ca, req, …

1:对称加密:

工具:openssl enc, gpg

算法:3des, aes, blowfish, twofish

2:enc命令:

帮助:man enc

加密:openssl enc -e -des3 -a -salt -in testfile-out testfile.cipher

(-e加密 -des3=3DES 对称秘钥的加密算法; -a=bese64编码
-salt加盐,盐就是随机数

解密:openssl enc -d -des3 -a -salt –in testfile.cipher-out testfile

eg:[root@centos7 ~/data]# openssl enc -e -des3 -a -salt -in fstab -out
fstab.des3

[root@centos7 ~/data]# openssl enc -d
-des3 -a -salt -in fstab.des3 -out fstab.des2

openssl ?

3:单向加密:

工具:md5sum, sha1sum, sha224sum,sha256sum…

openssl dgst

4:dgst命令:

帮助:man dgst

openssl dgst -md5 [-hex默认]
/PATH/SOMEFILE

openssl dgst -md5 testfile

md5sum /PATH/TO/SOMEFILE

eg:[root@centos7 ~/data]# openssl dgst sha1 fstab

sha1: No such file or directory

MD5(fstab)= ea10eb7312d3130f651eef33b184e79f

[root@centos7 ~/data]# openssl dgst -sha1 fstab

SHA1(fstab)= 69f52e22db64aaec6131513ff9fcb41791d80e80
16进制数

[root@centos7 ~/data]# sha1sum fstab

69f52e22db64aaec6131513ff9fcb41791d80e80
fstab 16进制数

 

5:MAC: Message
Authentication Code,单向加密的一种延伸应用,用于实现

网络通信中保证所传输数据的完整性机制

CBC-MAC

HMAC:使用md5或sha1算法

 

6:生成用户密码:

passwd命令:

帮助:man sslpasswd

openssl passwd -1 -salt SALT(最多8位) # -1是基于MD5加密算法

openssl passwd -1 –salt centos

eg:[root@centos7 ~/data]# openssl passwd -1
#只要定义了盐,那么相同的口令生成密码一样

Password:

Verifying – Password:

$1$pfpVILIm$LV0tZ2Htptke5GHCKi0wi.

[root@centos7 ~/data]# openssl passwd -1 -salt pfpVILIm

Password:

$1$pfpVILIm$LV0tZ2Htptke5GHCKi0wi.

7:生成随机数:

帮助:man sslrand

openssl rand -base64|-hex NUM

eg:[root@centos7 ~/data]# openssl rand
-base64 9

xTZ4ZCM5s41M

[root@centos7 ~/data]# openssl rand -base64 20

OTVrh/ZyOx3MaorxPfrdd6v+SUg=
生成8位只需要大小写字母,数字,其余过滤

Pm41SKzy[root@centos7
~/data]# openssl rand -base64 20 |tr -d
‘+/=’ |head -c8

NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出

现的字符数为NUM*2

eg:创建10个账号,每个账号有随机口令

1:for i in {1..10};do useradd user$i;passwd=`openssl rand -base64 20
|tr -d ‘+/=’ |head -c8`;echo $passwd |passwd –stdin user$i &>
/dev/null;done

:2:getent passwd 查看创建的用户

3:[root@centos7 ~]# getent shadow 查看口令

4:[root@centos7 ~]# for i in {1..10};do userdel -r user$i;done
删除创建

8:公钥加密:

算法:RSA, ELGamal

工具:gpg, openssl rsautl(man rsautl)

9:数字签名:

算法:RSA, DSA, ELGamal

10:密钥交换:

算法:dh

DSA: Digital Signature Algorithm

DSS:Digital Signature Standard

RSA

 

11:生成密钥对儿:man
genrsa

生成私钥

openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE
NUM_BITS(-out后面跟上生成的文件径)

(umask 077; openssl genrsa –out test.key –des 2048) ( –des
2048对私钥进行加密)

openssl rsa -in test.key –out test2.key 将加密key解密
取消口令

eg:openssl genrsa -out test2.key -des 1024
加密完要输入口令,如果不想每次都输口令,则

改变权限,如:[root@centos7 /data]# ( umask 066 ; openssl genrsa
-out test4.key 1024 )

结果: -rw——-. 1 root root 887 Jul 10 03:41 test4.key
#加括号相当于开启了字shall,执行

完后,umask不会变

从私钥中提取出公钥

openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE

openssl rsa –in test.key –pubout –out test.key.pub

eg:[root@centos7 /data]# openssl rsa -in test3.key -pubout -out
test3.pubkey

writing RSA key

随机数生成器:伪随机数字

键盘和鼠标,块设备中断

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

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

eg:[root@centos7 /data]# cat /dev/urandom |tr -dc ‘a-zA-Z0-9’ |head
-c8

 

12:PKI:Public Key
Infrastructure (互联网付费CA)

CA

RA

CRL

证书存取库

建立私有CA:

OpenCA

openssl

证书申请及签署步骤:

1、生成申请请求

2、RA核验

3、CA签署

4、获取证书

 

实验:centos模拟创建CA和申请证书

总流程:

1、创建所需要的文件

      touch /etc/pki/CA/index.txt
生成证书索引数据库文件

      echo 01 > /etc/pki/CA/serial
指定第一个颁发证书的序列号  

2、
CA自签证书,在centos7中生成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

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

              -x509:
专用于CA生成自签证书

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

              -days
n:证书的有效期限

发表评论

电子邮件地址不会被公开。 必填项已用*标注