文章目录
- 1、使用while read line和/etc/passwd,计算用户id总和。
- 2、总结索引数组和关联数组,字符串处理,高级变量使用及示例。
- 3、求10个随机数的最大值与最小值。
- 4、使用递归调用,完成阶乘算法实现。
- 5、解析进程和线程的区别?
- 6、解析进程的结构。
- 7、结合进程管理命令,说明进程各种状态。
- 8、说明IPC通信和RPC通信实现的方式。
- 9、总结Linux,前台和后台作业的区别,并说明如何在前台和后台中进行状态转换。
- 10、总结内核设计流派及特点。
- 11、总结rocky 启动流程,grub工作流程
- 12、手写chkconfig服务脚本,可以实现服务的开始,停止,重启。
- 13、总结systemd服务配置文件
- 14、总结system启动流程
- 15、总结awk工作原理,awk命令,选项,示例。
- 16、总结awk的数组,函数。
- 17、总结ca管理相关的工具,根据使用场景总结示例。
- 18、总结对称加密和非对称加密算法和用openssl签发证书步骤
1、使用while read line和/etc/passwd,计算用户id总和。
root@hb-cj-rocky:/home/yuwanhai/myBash# cat id_sum.sh
#!/bin/bash
sum=0
while read line; do
uid=$(echo "$line" | awk -F: '{print $3}')
sum=$((sum + uid))
done < /etc/passwd
echo "用户 ID 总和: $sum"
root@hb-cj-rocky:/home/yuwanhai/myBash# bash id_sum.sh
用户 ID 总和: 72847
2、总结索引数组和关联数组,字符串处理,高级变量使用及示例。
- 索引数组
数组名和索引
索引的编号从0开始,属于数值索引
emp[0]=mage
emp[1]=yuwanhai
title=(1 2 3)
echo ${emp[1]}
yuwanhai
---
#显示全部数组
echo ${emp[*]}
mage yuwanhai
---
echo ${emp[@]}
mage yuwanhai
#查看数组数据个数
echo ${#emp[@]}
2
#删除一个数组
unset num[3]
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# echo ${num[*]}
1 2 3 5 6 7 8 9 0
unset 数组名 --删除整个数组
root@hb-cj-rocky:/home/yuwanhai/myBash# unset emp
数组切片:
[root@centos8 ~]#num=({0..10})
[root@centos8 ~]#echo ${num[*]:2:3}
2 3 4
[root@centos8 ~]#echo ${num[*]:6}
6 7 8 9 10
- 关联数组
索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0版本之后开始支持
declare -A ARRAY_NAME
ARRAY_NAME=([idx_name1]='val1' [idx_name2]='val2‘...)
!!!关联数组必须先声明再调用
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# declare -A yu
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# yu[yu1]=yuwanhai1
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# yu[yu2]=yuwanhai2
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# echo ${yu[*]}
yuwanhai1 yuwanhai2
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# echo ${#yu[*]}
2
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# echo ${!yu[*]} --取关联数组下标
yu1 yu2
字符串切片
echo ${#var}
6
echo ${var:2:3} --取指定
rin
echo ${var: -3} --取尾
ing
基于模式取子串
#其中word可以是指定的任意字符,自左而右,查找var变量所存储的字符串中,第一次出现的word, 删除字
符串开头至第一次出现word字符串(含)之间的所有字符,即懒惰模式,以第一个word为界删左留右
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# url=https://cn.bing.com/index.com
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# echo ${url#*/} --懒惰模式
/cn.bing.com/
---
root@hb-cj-rocky:/home/yuwanhai/myBash/Project11# echo ${url##*/} --贪婪模式
index.com
#同上,只不过删除字符串最右侧的字符向左至最后一次出现word字符之间的所有字符,即贪婪模式,以从右向
左的最后一个word为界删右留左
${var%%word*}
${var%%word}
替换
echo ${url/bing/baidu}
https://cn.baidu.com/index.com
删除
#删除var表示的字符串中第一次被pattern匹配到的字符串,懒惰模式
${var/pattern}
字符大小写转换
#把var中的所有小写字母转换为大写
${var^^}
#把var中的所有大写字母转换为小写
${var,,}
3、求10个随机数的最大值与最小值。
root@hb-cj-rocky:/home/yuwanhai/myBash# for i in {1..10}; do echo $RANDOM >> rand.txt
done
root@hb-cj-rocky:/home/yuwanhai/myBash# cat max_min.sh
#!/bin/bash
file="/home/yuwanhai/myBash/rand.txt"
min=$(head -n1 $file)
max=$(head -n1 $file)
while read line;do
[ $max -lt $line ] && max=$line
[ $min -gt $line ] && min=$line
done<$file
echo max=$max
echo min=$min
root@hb-cj-rocky:/home/yuwanhai/myBash# bash max_min.sh
max=26389
min=196
4、使用递归调用,完成阶乘算法实现。
root@hb-cj-rocky:/home/yuwanhai/myBash# cat factorial.sh
#!/bin/bash
factorial() {
if [ "$1" -eq 0 ] || [ "$1" -eq 1 ]; then
echo 1
else
local result=$(( $1 * $(factorial $(expr $1 - 1)) ))
echo $result
fi
}
factorial $1
root@hb-cj-rocky:/home/yuwanhai/myBash# bash factorial.sh 10
3628800
5、解析进程和线程的区别?
一个进程由多个线程组成,一个进程必须有一个线程。
进程是一个程序的副本是被载入内存的一个指令集合分配资源的单位。
线程是进程中的⼀个执⾏单元。
6、解析进程的结构。
进程一般由程序、数据集合和进程控制块三部分组成。
7、结合进程管理命令,说明进程各种状态。
root@hb-cj-rocky:/home/yuwanhai/myBash# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 1.0 171796 8120 ? Ss Apr27 0:02 /usr/lib/systemd/system
root 2 0.0 0.0 0 0 ? S Apr27 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< Apr27 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< Apr27 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< Apr27 0:00 [slub_flushwq]
root 6 0.0 0.0 0 0 ? I< Apr27 0:00 [netns]
8、说明IPC通信和RPC通信实现的方式。
同一主机
pipe 管道,单向传输
socket 套接字文件,双工通信
Memory-maped file 文件映射,将文件中的一段数据映射到物理内存,多个进程共享这片内存
shm shared memory 共享内存
signal 信号
Lock 对资源上锁,如果资源已被某进程锁住,则其它进程想修改甚至读取这些资源,都将被阻塞,直到锁被打开
semaphore 信号量,一种计数器,
不同主机:socket=IP和端口号
RPC remote procedure call
MQ 消息队列,生产者和消费者,如:Kafka,RabbitMQ,ActiveMQ
9、总结Linux,前台和后台作业的区别,并说明如何在前台和后台中进行状态转换。
前台作业:指当前在终端中运行的命令
后台作业:跟随系统启动终端关闭不会影响命令。
前台–>后台:运行中:ctrl+z 未运行:command&
后台–>前台:fg %[作业号]
10、总结内核设计流派及特点。
- 单内核设计:把所有功能集成于同一个程序(Linux)
- 微内核设计:每种功能使用一个单独的子系统实现(Windows、Solaris)
11、总结rocky 启动流程,grub工作流程
1 POST加电自检
2 BOOTLOADER
grub0.97
1阶段:mbr 0 扇区的446字节
1.5阶段: 0扇区后面续空间
2阶段: /boot/grub/
grub.conf 定义
内核 root=xxxx
initramfs.img 加载rootfs,需要驱动,压缩文件,包括了个精简版的rootfs
grub-install
3 kernel
1)硬件
2)加载根文件系统
4 /sbin/init
12、手写chkconfig服务脚本,可以实现服务的开始,停止,重启。
# 服务名称
SERVICE_NAME="my_service"
# 启动命令
START_COMMAND="/path/to/start_command"
# 停止命令
STOP_COMMAND="/path/to/stop_command"
# 重启命令
RESTART_COMMAND="$START_COMMAND && $STOP_COMMAND"
# 检查服务状态
check_status() {
if [ -f /var/run/${SERVICE_NAME}.pid ]; then
echo "running"
else
echo "stopped"
fi
}
# 启动服务
start_service() {
$START_COMMAND
}
# 停止服务
stop_service() {
$STOP_COMMAND
}
# 重启服务
restart_service() {
$RESTART_COMMAND
}
case "$1" in
start)
start_service
;;
stop)
stop_service
;;
restart)
restart_service
;;
status)
check_status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
13、总结systemd服务配置文件
systemd服务配置文件由三部分组成
[Unit]:定义与Unit类型相关的通用选项,用于提供unit描述消息,unit行为,依赖关系
[Service]:与特定类型相关的专用选项
[Install]:定义由systemclt enable/disable命令在实现服务开机启动或不启动时用到的一些选项
14、总结system启动流程
硬件启动POST
POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内
存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测
主板的ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出
程序,系统信息设置、开机加电自检程序和系统启动自举程序等
主板的RAM:CMOS互补金属氧化物半导体,保存各项参数的设定,按次序查找引导设备,第一个有引
导程序的设备为本次启动设备
启动加载器 bootloader
bootloader: 引导加载器,引导程序
- Windows: ntloader,仅是启动OS
- Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装 载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
Linux的bootloader
- LILO:LInux LOader,早期的bootloader,功能单一
- GRUB: GRand Unified Bootloader, CentOS 5,6 GRUB 0.97: GRUB Legacy, CentOS 7 以后使用GRUB 2.02
GRUB 启动阶段
- primary boot loader :
1st stage:MBR的前446个字节
1.5 stage:MBR 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统
- secondary boot loader :2nd stage,分区文件/boot/grub/
启动文件放在:root@hb-cj-rocky:~# vim /boot/grub/grub.cfg
15、总结awk工作原理,awk命令,选项,示例。
工作原理:
- 读输入文件之前执行的代码段(由BEGIN关键字标识)。
- 主循环执行输入文件的代码段。
- 读输入文件之后的代码段(由END关键字标识)。
awk命令格式:
内置变量
awk中的变量分为:内置和自定义变量
root@hb-cj-rocky:~# x=":" ; awk -v FS="$x" -v OFS="_" 'BEGIN{print "Begin"}{print $1,$3}END{print "End"}' /etc/passwd
root_0
bin_1
root@hb-cj-rocky:~# x=":" ; awk -v FS="$x" 'BEGIN{print "Begin"}{print $1,$3}END{print "End"}' /etc/passwd
##将分隔符作为可以活动的;
awk -F: 'BEGIN{print "Begin"}{print $1,$3}END{print "End"}' /etc/passwd
root@hb-cj-rocky:~# cat a .txt
a b c;1 2 3;x y z
root@hb-cj-rocky:~# awk -v RS=";" '{print $1}' a.txt
a
1
x
root@hb-cj-rocky:~# awk -v RS=";" -v ORS="+++" '{print $1}' a.txt
a+++1+++x+++root@hb-cj-rocky:~# ^C
Mounted0%0%3%3%24%2%0%root@hb-cj-rocky:~# df | awk '{print $(NF-1)}'
Mounted
0%
0%
3%
3%
24%
2%
0%
##不换行在一行输出 print换printf
第网络连接最多的IP
root@hb-cj-rocky:~# ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 52 10.0.0.11:22 10.0.0.1:2129
root@hb-cj-rocky:~# ss -nt | awk '{print $(NF-1)}'
Peer
10.0.0.11:22
root@hb-cj-rocky:~# ss -nt | awk '{print $(NF-1)}'| awk -F: '{print $1}'
Peer
10.0.0.11
root@hb-cj-rocky:~# ss -nt | awk '{print NR, $(NF-1)}'| awk -F: '{print $1}'
1 Peer
2 10.0.0.11
root@hb-cj-rocky:~# awk '{print FNR}' /etc/passwd /root/a.txt
1
2
3
4
5
6
7
8
1
root@hb-cj-rocky:~# awk '{print FNR,FILENAME}' /etc/passwd /root/a.txt
1 /etc/passwd
2 /etc/passwd
3 /etc/passwd
4 /etc/passwd
5 /etc/passwd
6 /etc/passwd
自定义变量
1,-v varname=value 变量名区分字符大小写
2,在program中直接定义,以下定义了3个自定义变量,其实形式像编程语言一样,定义的时候用分号。打印变量跟之前一样,用逗号隔开,注意,不需要用美元符号
3,也可以引用命令行定义的变量
实例:
root@hb-cj-rocky:~# awk -v "name=N86" 'BEGIN{print name}'
N86
root@hb-cj-rocky:~# awk -v "name=N86" 'BEGIN{print name;name="YU";print name}'
N86
YU
printf
printf使用的转义字符
转义字符 | 定义 |
---|---|
c | 字符 |
s | 字符串 |
d | 十进制整数 |
ld | 十进制长整数 |
u | 十进制无符号整数 |
lu | 十进制无符号长整数 |
x | 十六进制整数 |
lx | 十六进制长整数 |
o | 八进制整数 |
lo | 八进制长整数 |
e | 用科学记数法(e 记数法)表示的浮点数 |
f | 浮点数 |
g | 选用e或f中较短的一种形式 |
printf的修饰符
字符 | 定义 |
---|---|
- | 左对齐修饰符 |
# | 显示8 进制整数时在前面加个0 显示16 进制整数时在前面加0x |
+ | 显示使用d 、e 、f 和g 转换的整数时,加上正负号+或- |
0 | 用0而不是空白符来填充所显示的值 |
printf的格式说明符
格式说明符 | 功能 |
---|---|
%c | 打印单个ASCII 字符 printf(“The character is %c\n”,x) 输出: The character is A |
%d | 打印一个十进制数 printf(“The boy is %d years old\n”,y) 输出:The boy is 15 years old |
%e | 打印数字的e 记数法形式 printf(“z is %e\n”,z) 打印: z is 2.3e+0 1 |
%f | 打印一个浮点数 printf(“z is %f\n”, 2.3 * 2) 输出: z is 4.600000 |
%o | 打印数字的八进制 printf(“y is %o\n”,y) 输出:z is 17 |
%s | 打印一个字符串 print(“The name of the culprit is %s\n”,$1) 输出:The name of the culprit is Bob Smith |
%x | 打印数字的十六进制值 printf(“y is %x\n”,y) 输出:x is f |
root@hb-cj-rocky:~# awk -F: '{printf "%+20s\n",$1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
root@hb-cj-rocky:~# awk -F: '{printf "%+20s || %s\n",$1,$3}' /etc/passwd
root || 0
bin || 1
daemon || 2
adm || 3
lp || 4
sync || 5
root@hb-cj-rocky:~# awk -F: '{printf "%+20s || %f\n",$1,$3}' /etc/passwd
root || 0.000000
bin || 1.000000
daemon || 2.000000
adm || 3.000000
root@hb-cj-rocky:~# awk -F: '{printf "%+20s || %d\n",$1,$3}' /etc/passwd
root || 0
bin || 1
daemon || 2
adm || 3
lp || 4
16、总结awk的数组,函数。
## 数组格式
arr[idx]
arr[idx] = value
root@hb-cj-rocky:~# awk 'BEGIN{A[0]="yu1";A[1]="yu2";for(c in A){print c":"A[c]}}'
0:yu1
1:yu2
root@hb-cj-rocky:~# awk '!line[$0]++{print $0}' a.txt
1 2 3 4 5 6
a
b
c
d
e
f
g
ca
root@hb-cj-rocky:~# awk '!line[$0]++{print $0}' a.txt --文本去重输出
1 2 3 4 5 6
a
b
c
d
e
f
g
ca
##统计一个ip或者一个字符出现的次ov
root@hb-cj-rocky:~# ss -nta | awk '!/State/{status[$1]++}END{for(i in status){print i,status[i]}}'
LISTEN 4
ESTAB 1
函数
awk的函数分为内置和自定义函数
常见内置函数
数值处理
rand():返回1和0之间随机数
srand():配置rand函数,生成随机数种子
int():返回整数
字符串处理
length(X):返回指定字符串长度
sub(r,s,x):对x字符串搜索r表示模式匹配的内容,并将第一个匹配内容替换为s
gsub(r,s,x):对x字符串搜索r,并将匹配的所有内容替换为s
split(s,array,r):对r为分隔符,切割字符串s,并将切割后的结果保存至array数组
自定义函数
root@hb-cj-rocky:~# vim func.awk
root@hb-cj-rocky:~# cat func.awk
function max(x,y){
x>y?var=x:var=y;
return var
}
BEGIN{print max(a,b)}
root@hb-cj-rocky:~# awk -v a=10 -v b=20 -f func.awk
20
root@hb-cj-rocky:~# sort a.txt
a
a
a
b
b
c
ca
d
d
e
e
e
e
f
g
root@hb-cj-rocky:~# sort a.txt |uniq -c
3 a
2 b
1 c
1 ca
2 d
4 e
1 f
1 g
17、总结ca管理相关的工具,根据使用场景总结示例。
1.创建CA所需要的文件
#生成证书索引数据库文件
touch /etc/pki/CA/index.txt
#指定第一个颁发证书的序列号
echo 01 > /etc/pki/CA/serial
2.生成CA私钥
cd /etc/pki/CA/
(umask 066; openssl genrsa -out private/cakey.pem 2048)
3.生成CA自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out
/etc/pki/CA/cacert.pem
填写国家编码
##查看自签名
root@hb-cj-rocky:~# openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
06:a0:06:58:d4:f7:11:f4:26:a2:a8:93:59:0e:d2:62:7e:1a:84:5e
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = CN, ST = beijing, L = beijing, O = mage, OU = n86, CN = www.magedu.org
Validity
Not Before: Apr 27 15:46:51 2024 GMT
Not After : Apr 25 15:46:51 2034 GMT
Subject: C = CN, ST = beijing, L = beijing, O = mage, OU = n86, CN = www.magedu.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:db:83:e8:d0:50:96:44:23:3f:50:82:9c:2e:58:
04:39:43:2c:5f:75:48:92:c8:df:4d:d9:90:eb:de:
root@hb-cj-rocky:/etc/pki# mkdir /data
root@hb-cj-rocky:/etc/pki# (umask 066; openssl genrsa -out /data/test.key 2048)
root@hb-cj-rocky:/etc/pki# openssl req -new -key /data/test.key -out /data/test.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]:bj
Organization Name (eg, company) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:n87
Common Name (eg, your name or your server's hostname) []:www.n86.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#生成用户证书
root@hb-cj-rocky:/etc/pki# openssl ca -in /data/test.csr -out /etc/pki/CA/certs/test.crt -days 100
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 15 (0xf)
Validity
Not Before: Apr 27 16:19:44 2024 GMT
Not After : Aug 5 16:19:44 2024 GMT
Subject:
countryName = CN
stateOrProvinceName = beijing
organizationName = mage
organizationalUnitName = n86-class
commonName = www.n86.om
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
19:E2:AE:97:81:B2:BC:D7:8A:CF:2B:EB:AE:92:41:AA:17:EC:C9:27
X509v3 Authority Key Identifier:
E2:2D:FC:DD:02:B8:61:54:F7:42:0A:21:E0:3D:0D:2C:14:A2:04:8F
Certificate is to be certified until Aug 5 16:19:44 2024 GMT (100 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@hb-cj-rocky:/etc/pki# tree /etc/pki/CA/
/etc/pki/CA/
├── cacert.pem
├── certs
│ └── test.crt
├── crl
├── index.txt
├── index.txt.attr
├── index.txt.old
├── newcerts
│ └── 0F.pem
├── private
│ └── cakey.pem
├── serial
└── serial.old
4 directories, 9 files
吊销证书
root@hb-cj-rocky:/etc/pki# openssl ca -revoke /etc/pki/CA/newcerts/0F.pem
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 0F.
Data Base Updated
root@hb-cj-rocky:/etc/pki# cat CA/index.txt
R 240805161944Z 240427162912Z 0F unknown /C=CN/ST=beijing/O=mage/OU=n86-class/CN=www.n86.om
root@hb-cj-rocky:/etc/pki# openssl crl -in /etc/pki/CA/crl.pem -noout -text
Certificate Revocation List (CRL):
Version 2 (0x1)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = CN, ST = beijing, L = beijing, O = mage, OU = n86, CN = www.magedu.org
Last Update: Apr 27 16:31:38 2024 GMT
Next Update: May 27 16:31:38 2024 GMT
CRL extensions:
X509v3 CRL Number:
1
Revoked Certificates:
Serial Number: 0F
Revocation Date: Apr 27 16:29:12 2024 GMT
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
7a:1f:1d:2d:56:84:0b:fc:69:9b:88:17:0b:f9:26:dd:ed:ff:
6a:d2:19:5a:c8:ad:9f:46:b4:6a:9d:9e:bf:b4:ba:6d:f2:38:
c2:57:33:f0:cf:2f:24:83:ac:21:90:e8:70:13:80:f2:a0:af:
2f:56:67:a3:f3:41:c8:d4:97:85:88:ce:a0:4c:38:13:d9:bf:
7b:f7:3b:ef:0c:6b:5b:34:df:ed:37:33:fb:a5:6e:39:c9:d7:
5e:bb:3e:a8:64:4c:72:87:fa:b7:d5:0b:6e:f0:8b:9a:a7:aa:
d0:de:69:29:8e:46:2f:5c:b6:39:2e:84:58:d1:dd:4a:23:37:
f9:a4:f1:9f:c7:9b:ad:dd:00:55:7b:9c:0f:8b:3c:ac:35:d4:
58:b6:8d:2a:63:be:05:e2:8c:28:8a:23:e6:a2:ef:ed:d3:7e:
45:4c:4d:86:18:ec:c4:b9:11:7b:e4:fc:42:01:ae:26:57:35:
74:af:99:1d:30:d4:9a:b8:37:83:31:e0:1d:31:95:1d:ea:99:
5a:70:5d:28:79:12:25:b2:ed:2a:28:7a:24:67:2e:fa:5f:64:
46:88:90:44:b6:a4:7c:df:5e:eb:fc:53:c8:8e:8e:aa:9b:55:
7e:9c:47:06:15:63:8c:db:eb:8e:79:17:98:27:2a:86:c0:b9:
bc:4f:01:6c
18、总结对称加密和非对称加密算法和用openssl签发证书步骤
对称加密与解密密码相同、加密解密速度快,用户双方不能确认身份;
非对称加密算法:一共有四把钥匙,分别为信息传递双方的公钥与私钥,加密解密速度慢不能用于大量文件传输,用户双方能确认身份,一般用于传递少量信息如:对称加密的密钥;
openssl签发证书步骤:
- 生成私钥文件
- 生成证书请求文件
- 使用CA根证书和CA私钥,对证书请求进行签名,生成最终的证书文件
- 生成客户端私钥
- 生成客户端证书申请文件