// 安全研究 · 2024-11-06

LInux基础(一):Linux 系统重要命令拾遗

在日常的Linux使用中,有一些命令是我们经常用到的基础命令,掌握它们对于系统管理与日常操作至关重要。本文将选取一些常用且容易出错的命令,详细讲解它们的使用方法、常用参数以及应用场景,帮助你更好地理解和使用这些命令。

文件操作

mv — 移动或重命名文件和目录

mv 命令用于移动文件或目录,或者重命名文件和目录。其基本语法为:

mv [选项] 源文件/目录 目标文件/目录

使用说明

  • mv 命令可以移动单个文件、多个文件或目录。
  • 如果目标是已存在的目录,源文件或目录会被移动到该目录中。
  • 如果目标是已存在的文件,源文件会被重命名为目标文件的名称。
  • mv 命令具有递归特性,可以用于移动目录及其内容。

示例

mv file1.txt /home/user/documents/   # 将 file1.txt 文件移动到目标目录
mv file1.txt newname.txt              # 重命名 file1.txt 为 newname.txt
mv folder1 /home/user/documents/     # 将 folder1 目录移动到目标目录
mv folder1 newfolder                 # 将 folder1 目录重命名为 newfolder

rm — 删除文件或目录

rm 命令用于删除文件或目录。删除操作是不可逆的,需谨慎使用。

常用选项

  • -r:递归删除,适用于删除目录及其内部所有文件。
  • -f:强制删除,不会提示确认。
  • -i:交互模式,每次删除前都会提示确认。

示例

rm file1.txt        # 删除单个文件
rm -r dir1/         # 删除目录及其内容
rm -f file2.txt     # 强制删除文件
rm -rf /home/user/*  # 强制删除目录下所有内容

cp — 拷贝文件

cp 命令用于拷贝文件或目录。

常用选项

  • -r:递归拷贝目录及其内容。
  • -i:拷贝时询问确认,防止覆盖已有文件。
  • -u:仅在源文件较新时才拷贝。

示例

cp file.txt /home/user/documents/   # 拷贝file.txt文件到指定目录
cp -r dir1/ /home/user/backup/      # 递归拷贝目录及其内容
cp -u file.txt /home/user/backup/   # 仅在源文件较新时才拷贝

软连接和硬链接

软链接,也称为符号链接或快捷方式,类似于 Windows 系统中的快捷方式。它是一个独立的文件,其中包含指向目标文件或目录路径的引用。软链接本质上是一个文本文件,指向实际的文件或目录。

创建软链接

使用 ln -s 命令来创建软链接:

ln -s /path/to/target /path/to/link
  • -s 表示创建符号链接。
  • /path/to/target 是目标文件或目录的路径。
  • /path/to/link 是软链接创建的路径。

软链接的特点

  • 跨文件系统:软链接可以在不同的文件系统之间创建链接。
  • 链接文件和目录:软链接不仅可以指向文件,还可以指向目录。
  • 链接失效:当目标文件被删除或移动时,软链接会变为“死链接”,无法再访问目标内容。

软链接使用场景

  • 灵活的文件组织:可以用于为常用的文件或程序创建易于记忆的别名或快捷方式。
  • 软件环境管理:例如在不同版本的软件之间切换,可以使用软链接指向当前版本。

硬链接是指向文件的多个入口。硬链接通过指向同一个文件的 inode,使得文件有多个路径名。所有硬链接指向相同的数据块,文件内容不会被删除,直到所有硬链接都被删除。

创建硬链接

硬链接使用 ln 命令创建(不带 -s 选项):

ln /path/to/target /path/to/link
  • /path/to/target 是目标文件的路径。
  • /path/to/link 是硬链接创建的路径。

硬链接的特点

  • 不能跨文件系统:硬链接只能在同一文件系统中创建,不能跨文件系统。
  • 指向相同 inode:硬链接指向文件的 inode,每个硬链接都会分配一个新的文件名,但它们指向相同的物理数据块。
  • 文件内容共享:修改任一硬链接的文件内容,所有硬链接都会受到影响。
  • 文件删除:删除一个硬链接并不会删除文件,只有当所有硬链接都被删除时,文件才会被实际删除。

硬链接使用场景

  • 确保文件不丢失:硬链接适用于需要确保文件始终存在的场景,如文件备份和保护重要数据。
  • 多路径访问同一文件:如果多个程序需要访问同一文件,硬链接可以提供多个入口。

软链接与硬链接的主要区别

特性 软链接(Symbolic Link) 硬链接(Hard Link)
创建命令 ln -s /path/to/target /path/to/link ln /path/to/target /path/to/link
跨文件系统 可以跨文件系统 不能跨文件系统
链接对象 可以链接文件和目录 只能链接文件,通常不能链接目录
文件的物理存储 软链接有独立的 inode,指向目标文件路径 硬链接指向相同的 inode,多个路径指向相同的文件内容
目标文件删除后 软链接会变成无效链接(死链接) 硬链接不会受目标文件删除的影响
文件内容修改 修改软链接指向的文件会影响所有软链接 修改任何一个硬链接都会影响其他硬链接
删除链接后的效果 删除软链接不会影响目标文件,目标文件被删除后,软链接失效 删除一个硬链接不影响文件,文件只有删除所有硬链接后才会被删除

使用案例

  1. 移动文件和创建软链接

假设我们需要将 newfile 移动到 newdir2 目录,并在原位置创建一个指向新位置的软链接:

mv newfile newdir2
ln -s newdir2/newfile newfile
  1. 拷贝文件和创建硬链接

假设我们需要将 file.txt 拷贝到 newdir.txt,并在原文件位置创建一个硬链接:

cp file.txt newdir.txt
ln file.txt hardlink.txt
  1. 创建软链接和硬链接

假设我们有一个文件 original.txt,可以分别创建软链接和硬链接:

  • 创建软链接:

    ln -s original.txt symlink.txt
  • 创建硬链接:

    ln ~/offseec123.txt hardlink.txt

文本处理

1. grep 工具

grep 用于在文本中搜索匹配的内容并显示匹配的行。

基本用法

  1. 搜索含有特定字符串的行:

    grep "pattern" 文件名

    示例:搜索文件 test.txt 中包含 “error” 的行:

    grep "error" test.txt
  2. 忽略大小写:

    grep -i "pattern" 文件名
  3. 搜索递归目录中的匹配内容:

    grep -r "pattern" 目录名
  4. 显示行号:

    grep -n "pattern" 文件名
  5. 只显示匹配的字符串而不显示整行:

    grep -o "pattern" 文件名
  6. 显示匹配行的上下文(例如 3 行):

    grep -C 3 "pattern" 文件名
  7. 排除包含特定字符串的行:

    grep -v "pattern" 文件名
  8. 使用正则表达式(扩展模式需要 -E 参数):

    grep -E "pattern1|pattern2" 文件名

    示例:匹配 “error” 或 “fail”:

    grep -E "error|fail" test.txt

2. sed 工具

sed 是一种流编辑器,常用于对文本进行批量处理或编辑。

基本用法

  1. 替换文本中的字符串:

    sed 's/旧字符串/新字符串/' 文件名

    示例:将 file.txt 中的 “error” 替换为 “fixed”:

    sed 's/error/fixed/' file.txt
  2. 全局替换(每行匹配所有的字符串):

    sed 's/旧字符串/新字符串/g' 文件名
  3. 替换时忽略大小写:

    sed 's/旧字符串/新字符串/Ig' 文件名
  4. 替换并将结果保存到新文件:

    sed 's/旧字符串/新字符串/g' 文件名 > 新文件名
  5. 删除包含特定字符串的行:

    sed '/字符串/d' 文件名
  6. 删除文件中的空行:

    sed '/^$/d' 文件名
  7. 只显示匹配的行:

    sed -n '/字符串/p' 文件名
  8. 指定行号的替换:

    sed '2s/旧字符串/新字符串/' 文件名

    示例:将第 2 行中的 “error” 替换为 “fixed”:

    sed '2s/error/fixed/' file.txt
  9. 替换某行范围的内容:

    sed '1,5s/旧字符串/新字符串/' 文件名
  10. 将修改直接写入文件(加 -i 参数):

    sed -i 's/旧字符串/新字符串/g' 文件名

3. awk 工具

awk 是强大的文本处理工具,适合复杂的格式化输出和数据处理。

基本用法

  1. 打印文件的某列数据:

    awk '{print $列号}' 文件名

    示例:打印文件 test.txt 的第一列:

    awk '{print $1}' test.txt
  2. 按分隔符打印列:

    awk -F "分隔符" '{print $列号}' 文件名

    示例:以逗号为分隔符打印第二列:

    awk -F "," '{print $2}' test.csv
  3. 过滤特定条件的行:

    awk '$列号 条件 {print $0}' 文件名

    示例:打印文件中第二列大于 10 的行:

    awk '$2 > 10 {print $0}' test.txt
  4. 为输出添加字段或修改格式:

    awk '{print "行号: " NR ", 数据: " $1}' 文件名
  5. 统计文件中的行数:

    awk 'END {print NR}' 文件名
  6. 累加列值:

    awk '{sum += $列号} END {print sum}' 文件名

4. cut 工具

cut 用于提取文件中的特定字段或列。

基本用法

  1. 按字节提取:

    cut -b 字节范围 文件名

    示例:提取文件中第 1-5 个字节:

    cut -b 1-5 文件名
  2. 按字符提取:

    cut -c 字符范围 文件名
  3. 按分隔符提取列:

    cut -d "分隔符" -f 列号 文件名

    示例:提取以逗号分隔的第二列:

    cut -d ',' -f 2 文件名

5. sort 工具

sort 用于排序文件内容。

基本用法

  1. 按字典顺序排序:

    sort 文件名
  2. 按数值排序:

    sort -n 文件名
  3. 逆序排序:

    sort -r 文件名
  4. 排序后去重:

    sort -u 文件名
  5. 按指定列排序:

    sort -k 列号 文件名

6. uniq 工具

uniq 用于过滤或统计重复的行。

基本用法

  1. 去重(相邻重复行):

    uniq 文件名
  2. 统计每行重复次数:

    uniq -c 文件名
  3. 只显示重复的行:

    uniq -d 文件名

7. wc 工具

wc 是 Linux 下用于统计文件内容的命令,可以统计行数、单词数、字节数或字符数等信息。

基本用法

  1. 统计文件的行数:

    wc -l file.txt
  2. 统计文件的单词数:

    wc -w file.txt
  3. 统计文件的字节数:

    wc -c file.txt
  4. 统计文件的字符数(多字节支持):

    wc -m file.txt
  5. 同时统计多个信息:

    wc file.txt

加解压工具

zip 与 unzip

1. 压缩文件

  • 将目录或文件压缩为 test.zip:
    zip -r test.zip 文件名或目录名
  • 添加压缩级别(1最快,9最高压缩率):
    zip -9 -r test.zip 文件名或目录名

2. 解压文件

  • 将文件解压到当前目录:
    unzip test.zip
  • 将文件解压到指定目录:
    unzip -d /temp test.zip
  • 解压时不覆盖已有文件:
    unzip -n test.zip
    unzip -n -d /temp test.zip
  • 仅查看压缩包中的文件列表(无解压):
    unzip -l test.zip
  • 查看文件列表并显示压缩比率:
    unzip -v test.zip
  • 检查压缩包是否损坏:
    unzip -t test.zip
  • 强制覆盖已有文件并解压到指定目录:
    unzip -o test.zip -d /temp

tar

tar 是 Linux 系统中常见的归档工具,常用于 .tar, .tar.gz, .tar.bz2 等格式文件的压缩与解压。

1. 压缩文件

  • 创建 .tar 格式归档文件:
    tar -cvf archive.tar 文件名或目录名
  • 创建并使用 gzip 压缩:
    tar -czvf archive.tar.gz 文件名或目录名
  • 创建并使用 bzip2 压缩:
    tar -cjvf archive.tar.bz2 文件名或目录名

2. 解压文件

  • 解压 .tar 文件:
    tar -xvf archive.tar
  • 解压 .tar.gz 文件:
    tar -xzvf archive.tar.gz
  • 解压 .tar.bz2 文件:
    tar -xjvf archive.tar.bz2
  • 将解压的内容放到指定目录:
    tar -xzvf archive.tar.gz -C /目标目录

gzip

1. 压缩文件

  • 压缩单个文件为 .gz 格式:
    gzip 文件名
  • 使用最高压缩率(比默认更慢):
    gzip -9 文件名

2. 解压文件

  • 解压 .gz 文件:
    gzip -d 文件名.gz

xz

1. 压缩文件

  • 压缩单个文件为 .xz 格式:
    xz 文件名

2. 解压文件

  • 解压 .xz 文件:
    xz -d 文件名.xz

查找工具

find

find 是 Linux 系统中强大的文件查找工具,支持通过文件名、类型、时间、大小、权限等多种条件进行文件查找。

基本语法

find [路径] [选项] [查找条件]

常用选项和条件

  • -name:按文件名查找,支持通配符。-iname 忽略大小写。
  • -type:按文件类型查找 (f 为文件,d 为目录)。
  • -size:按文件大小查找,单位 b(字节)、k(千字节)、M(兆字节)等。
  • -mtime / -mmin:按最后修改时间(天/分钟)查找,支持 +n、-n、n 格式。
  • -atime / -amin:按最后访问时间查找。
  • -ctime / -cmin:按文件状态变更时间(权限、链接)查找。
  • -user:按文件所有者查找。
  • -perm:按文件权限查找,支持 /4000、/2000、/1000 等格式。
  • -exec:对每个找到的文件执行指定命令。

查找特殊权限文件

SUID 文件

SUID 是一种特殊权限,用于执行文件时应用文件所有者的权限。

find / -type f -perm /4000
SGID 文件

SGID 表示执行文件时应用文件组的权限。

find / -type f -perm /2000
Sticky 位

Sticky 位用于目录,防止非所有者删除该目录中的文件。

find / -type d -perm /1000
特定权限查找
  • +u+s:查找至少具有 SUID 的文件。
  • -u+s:查找不包含 SUID 的文件。
  • =u+s:查找完全匹配 SUID 的文件。

高级查找示例

  1. 按时间查找
    查找 30 分钟内修改的 .sh 文件并列出:

    find . -type f -iname '*.sh' -mmin -30 -ls
    • -ls:显示文件详细信息(类似 ls -l 命令)。
  2. 按权限查找
    查找 root 用户的 .sh 文件,具有其他用户写权限,忽略错误:

    find / -user root -type f -perm -o=w -name "*.sh" 2>/dev/null
    • -user root:查找 root 所有的文件。
    • -perm -o=w:文件具有“其他用户写权限”。
    • 2>/dev/null:忽略权限不足的错误。
  3. 删除匹配文件
    查找并删除 .svn 目录:

    find . -name "*.svn" -exec rm -rf {} \;
    • -exec:对匹配的文件/目录执行命令,{} 表示匹配文件或目录。
  4. 按修改时间排序并分页查看
    查找 2 天前修改的文件,按修改时间排序,分页显示:

    find ~ -mtime 2 -ls | sort -k9 -k10 | more
    • sort -k9 -k10:按第 9 列(文件名)和第 10 列(修改时间)排序。
    • more:分页显示,便于查看。
  5. 增量备份(根据修改时间)

    查找修改时间在 24 小时内的文件并备份:

    find /source/directory -mtime -1 -exec cp -u {} /backup/directory/ \;
    • -mtime -1:查找 24 小时内修改的文件。
    • -exec cp -u:仅当源文件较新时才复制。

locate

locate 是一种比 find 更快捷的文件查找工具。它依赖预生成的文件数据库(如 /var/lib/mlocate/mlocate.db)来定位文件,查找速度极快,但可能不是最新的数据,因为数据库更新通常是通过计划任务进行的(如 updatedb 命令)。

常用选项

  • -i:忽略大小写查找。
  • -r:使用正则表达式查找。
  • -n [数量]:限制显示的结果数量。
  • -c:只输出匹配结果的数量。
  • -e:仅显示当前实际存在的文件(剔除数据库中已经不存在的文件)。
  • -0:输出结果使用 \0 作为分隔符,适合与其他命令结合使用。

示例

  • 基本查找

    查找包含 “filename” 的所有文件:

    locate filename
  • 忽略大小写查找

    查找名称中包含 “filename” 的文件,忽略大小写:

    locate -i filename
  • 正则表达式查找

    使用正则表达式查找 .log 文件:

    locate -r '\.log$'
  • 限制查找结果数量

    限制查找到 5 个结果:

    locate -n 5 filename
  • 统计匹配结果数量

    统计匹配 filename 的文件数目:

    locate -c filename

更新数据库

由于 locate 使用缓存数据库,需要定期更新数据库才能保证数据的准确性:

sudo updatedb

查找命令路径

whereis 和 which 都是用于定位命令路径的工具。

whereis

whereis 查找命令的二进制文件、源码和帮助文件路径。

  • 常用参数:

    • -b:仅查找二进制文件路径
    • -m:仅查找帮助文件路径
  • 示例:

    whereis ls

which

which 在 PATH 环境变量中查找命令的执行路径,适用于确认命令的安装位置。

  • 常用参数:

    • -a:显示所有匹配路径(默认显示第一个)
  • 示例:

    which -a python

磁盘与内存管理

df — 查看磁盘空间

df 命令用于显示文件系统的磁盘空间使用情况。

常用命令

df -h
df -T
  • -h:以易于理解的格式显示磁盘空间,单位为 KB、MB、GB 等。
  • -T:显示文件系统类型,如 ext4、xfs 等。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

du — 查看目录空间使用

du 命令用于查看目录及其子目录的磁盘空间使用情况。

常用命令

du -h /path/to/dir
du -sh /path/to/dir
sudo du -hsc ./*
  • -h:以人类可读的格式显示空间使用情况。
  • -s:仅显示目录的总磁盘使用情况,不列出每个子目录。
  • -c:显示所有文件和目录的总和。 在这里插入图片描述 在这里插入图片描述

free — 查看内存使用情况

free 命令用于显示系统内存和交换空间的使用情况。

常用命令

free -h
free -m
  • -h:以易于理解的格式显示内存使用情况。
  • -m:以 MB 为单位显示内存使用情况。 在这里插入图片描述

fdisk — 查看硬盘分区

fdisk 是磁盘分区工具,用于列出系统中的磁盘及其分区信息。

常用命令

sudo fdisk -l
  • -l:列出所有磁盘及其分区信息。

mount — 挂载分区

mount 命令用于挂载文件系统,将分区或设备挂载到指定的目录。

常用命令

sudo mount /dev/sda2 /mnt/data    # 将 /dev/sda2 分区挂载到 /mnt/data 目录
sudo mount -t ext4 /dev/sda1 /mnt/data  # 挂载指定类型的分区
  • -t:指定文件系统类型,如 ext4、xfs 等。
  • -o:指定挂载选项,如 ro(只读)或 rw(读写)。

进程管理

ps — 查看进程

ps 命令用于查看系统中当前运行的进程信息,帮助管理员监控系统状态和分析进程活动。

常用命令

ps aux
ps -ef
  • aux:显示所有用户的所有进程。
  • -ef:以标准格式列出所有进程的详细信息,包括父进程、启动时间等。

top — 实时查看进程

top 命令可以实时显示系统的资源占用情况,包括 CPU、内存、各进程的资源消耗等,适合监控系统性能和进程健康状况。

使用说明

  • top 默认每 3 秒刷新一次,显示所有进程的资源使用情况。
  • 按 q 键退出 top 界面。

常用操作

  • P:按 CPU 使用率排序。
  • M:按内存使用率排序。
  • k:通过输入 PID 终止进程。

网络管理

网络接口管理

ifconfig

ifconfig 用于查看和配置网络接口信息。

常用命令:

ifconfig            # 显示所有接口的详细信息
ifconfig ens33      # 查看指定接口
ifconfig eth0 down  # 禁用接口 eth0
ifconfig eth0 up    # 启用接口 eth0

ip

ip 命令是 ifconfig 的替代工具,功能更强大,支持更详细的网络接口配置。

常用命令:

ip a           # 列出所有接口的信息
ip addr show eth0 / ip a show eth0 # 查看指定接口
ip link set eth0 up     # 启用接口 eth0
ip link set eth0 down   # 禁用接口 eth0

查看网络连接状态

netstat

netstat 用于查看网络连接、路由表和接口统计信息。

常用命令:

netstat -pantu
  • -n:显示地址和端口号的数值形式,提升解析速度。
  • -a:显示所有连接(包括监听和非监听的套接字)。
  • -l:显示所有正在监听的网络连接。
  • -t:显示 TCP 连接。
  • -u:显示 UDP 连接。
  • -p:显示每个连接对应的进程 ID 和名称。

ss

ss 是 netstat 的更快速替代工具,性能优于 netstat。它可以更高效地显示网络套接字信息。

常用命令:

ss -pantu
  • -n、-a、-t、-u、-p:与 netstat 的选项含义相同,用于查看特定的网络状态信息。

查看 ARP 缓存

arp

arp 用于管理和显示 IP 地址与 MAC 地址的映射关系(ARP 缓存)。通过 arp,可以查看和修改系统中的 ARP 表。

常用命令:

arp -en
  • -e:以易读格式显示 ARP 缓存中的条目,包括 IP 地址、MAC 地址等。
  • -n:不解析域名,加快执行速度。

路由信息管理

route

route 用于显示和管理系统的路由表,可以用于查看当前的路由信息、添加或删除路由条目。

常用命令:

route            # 显示当前的路由表
route add default gw 192.168.1.1  # 添加默认网关

ip route

ip route 提供了更灵活和强大的路由管理功能,是 route 的现代替代工具,适用于复杂的路由配置。

常用命令:

ip route          # 显示当前的路由表
sudo ip route add 10.10.10.0/24 dev eth0  # 添加到特定网络的路由
  • add:添加新的路由条目。
  • 10.10.10.0/24:目标网络地址和子网掩码。
  • dev eth0:指定通过 eth0 接口到达目标网络。

路由跟踪工具

traceroute

traceroute 是用于跟踪数据包从本地主机到目标主机的路径的工具,可显示每一跳路由的 IP 地址和响应时间。

常用命令:

traceroute www.example.com
  • www.example.com:目标主机的域名或 IP 地址。

网络配置文件

/etc/network/interfaces

/etc/network/interfaces 是 Debian 系统上用于网络接口配置的文件。可以在此文件中定义接口的 IP 地址、网关、子网掩码等信息。

常用配置示例:

auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
  • auto eth0:自动启动接口 eth0。
  • iface eth0 inet static:配置接口 eth0 使用静态 IP。
  • address、netmask、gateway:分别指定 IP 地址、子网掩码和网关。

其他命令

scp — 文件拷贝

scp 命令(Secure Copy)用于在不同主机之间通过 SSH 协议安全地复制文件或目录。适用于需要在本地与远程或两个远程主机之间传输文件的场景,scp 既保证了传输的加密安全,也提供了丰富的选项便于灵活操作。

常用选项

  • -r:递归复制整个目录及其内容。
  • -p:保留文件的权限和修改时间。
  • -C:在传输过程中压缩文件,加速传输。
  • -P [端口号]:指定 SSH 端口(默认是 22),当远程主机使用非默认端口时需设置。

示例

  1. 从本地复制文件到远程主机

    scp file.txt user@remote:/path/to/destination
    • 将本地文件 file.txt 复制到远程主机 remote 的 /path/to/destination 目录下。
  2. 递归复制目录到远程主机

    scp -r dir/ user@remote:/path/to/destination
    • 将本地的 dir 目录及其内容递归复制到远程主机的 /path/to/destination 路径。
  3. 从远程主机复制文件到本地并重命名

    scp root@1.1.1.1:/home/kali/.bashrc Copiedbashrc
    • 以 root 用户从 IP 地址 1.1.1.1 的远程主机上复制 /home/kali/.bashrc 文件到本地并重命名为 Copiedbashrc。
  4. 保留文件属性并指定端口进行复制

    scp -p -P 2222 passwd root@127.0.0.1:~
    • 将本地文件 passwd 复制到 127.0.0.1 本地的 root 用户主目录,同时保留文件属性,指定 SSH 端口为 2222。

OpenSSL — 安全套接字层工具

openssl 是一个开源库和命令行工具,用于实现 SSL/TLS 协议、加密通信及密钥和证书管理。它支持多种加密算法,可用于生成密钥、创建证书签名请求 (CSR) 和证书格式转换等操作。

密码哈希生成

OpenSSL 支持多种密码哈希算法:

  • 示例:

    openssl passwd -1 123     # 使用 MD5 算法
    openssl passwd -5 123     # 使用 SHA-256 算法
  • 常用选项:

    • -salt <val>:自定义盐值,防止彩虹表攻击
    • -6:SHA-512 算法
    • -5:SHA-256 算法
    • -apr1:MD5 的 Apache 变体
    • -1:MD5 算法

常用命令

  • 生成 RSA 密钥对及证书请求 (CSR):

    openssl genpkey -algorithm RSA -out private.key                          # 生成私钥
    openssl rsa -pubout -in private.key -out public.key                     # 生成公钥
    openssl req -new -key private.key -out request.csr                      # 生成 CSR
  • 证书格式转换(PEM 转 DER):

    openssl x509 -outform DER -in certificate.pem -out certificate.der

原文 https://blog.csdn.net/2301_79518550/article/details/143582008