Linux 学习资料 https://pan.baidu.com/s/1A6qqBk2ViE_Le2cQjSowkQ?pwd=7uz8
一、命令简介
openssl 是一个功能强大且应用广泛的开源工具套件和密码学库,它实现了 安全套接字层(SSL) 和 传输层安全(TLS) 协议。该工具提供了全面的密码学功能,包括对称 / 非对称加密、数字签名、证书管理、消息摘要以及各种网络协议的安全实现。它不仅是许多安全应用和协议(如 HTTPS)的基石,也是系统管理员和开发人员进行安全测试、密钥和证书管理的核心命令行工具。
二、语法格式
openssl 命令的基本语法格式如下:
bash
运行
openssl command [command_options] [command_args]更通用的格式为:
bash
运行
openssl [全局选项] <命令> [命令选项] [命令参数]运行模式:
交互模式:直接输入 openssl 并回车,会进入一个交互式命令行环境。 批处理模式:输入 openssl 后紧跟特定命令和参数,执行单一任务后退出。
三、常用选项及说明
openssl 包含众多子命令,以下分类列出最常用的命令及其关键选项:
1. 标准命令与消息摘要
version:查看 OpenSSL 版本信息。 help:获取命令帮助。 dgst:计算消息摘要(哈希值),支持多种算法。 -sign file:使用私钥对摘要签名。 -verify file:使用公钥验证签名。 sha1, sha256, md5 等:直接使用指定算法的摘要命令。
2. 对称加密与编码
enc:对称加密 / 解密工具。 -e:加密(默认)。 -d:解密。 -aes-256-cbc, -des3:指定加密算法和模式。 -salt:使用盐值增加安全性。 -in file:输入文件。 -out file:输出文件。 -k /-pass:指定密码。 base64:进行 Base64 编码或解码。 -e:编码。 -d:解码。
3. 非对称加密与密钥管理
genrsa:生成 RSA 私钥。 -out key.pem:输出密钥文件。 -aes256:用 AES‑256 加密私钥。 2048:指定密钥位数(如 2048)。 rsa:处理 RSA 密钥。 -in key.pem:输入密钥文件。 -pubout:从私钥中提取并输出公钥。 -text:以文本形式输出密钥详情。 genpkey:生成多种算法的私钥(更现代的替代)。 pkey:处理通用私钥。
4. 证书签名请求与证书
req:生成证书签名请求(CSR)或自签名证书。 -new:生成新的 CSR。 -newkey rsa:2048:生成新私钥和 CSR。 -key key.pem:使用现有私钥。 -out req.csr:输出 CSR 文件。 -x509:生成自签名证书。 -days 365:设置证书有效期。 -config file:指定配置文件。 x509:证书查看与处理。 -in cert.pem:输入证书。 -text:以文本形式显示证书详情。 -noout:不输出编码后的证书。 -dates:显示起止日期。 -subject /-issuer:显示主题 / 颁发者。 -fingerprint:显示指纹。
5. 其他实用命令
s_client:作为 SSL/TLS 客户端连接服务器,用于测试和调试。 -connect host:port:连接的主机和端口。 -servername name:指定 SNI。 s_server:启动一个 SSL/TLS 测试服务器。 rand:生成随机数据。 -base64 num:生成指定字节数的随机数据,并以 Base64 输出。 -hex num:以十六进制输出。 smime:处理 S/MIME 邮件(加密、签名、验证)。
四、示例用法
1. 生成随机密码
生成一个 15 字节的随机密码,并用 Base64 编码:
bash
运行
openssl rand -base64 152. 计算文件的 SHA256 哈希值
bash
运行
openssl dgst -sha256 filename.iso或:
bash
运行
openssl sha256 filename.iso3. 生成 RSA 私钥和 CSR
生成一个 2048 位、AES‑256 加密的私钥和对应的 CSR:
bash
运行
# 生成私钥 openssl genrsa -aes256 -out server.key 2048 # 基于此私钥生成CSR,会提示输入证书信息 openssl req -new -key server.key -out server.csr4. 查看证书详情
bash
运行
openssl x509 -in certificate.crt -text -noout5. 测试网站 SSL 证书
连接到远程服务器并显示其证书信息:
bash
运行
openssl s_client -connect www.example.com:443 -servername www.example.com6. 对称加密解密文件
使用 AES‑256‑CBC 加密一个文件:
bash
运行
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.enc解密该文件:
bash
运行
openssl enc -aes-256-cbc -d -in encrypted.enc -out plaintext.txt7. 创建自签名证书
bash
运行
openssl req -x509 -newkey rsa:2048 -keyout mykey.pem -out mycert.pem -days 365 -nodes