OpenSSL 基本用法
/ 4 min read
Table of Contents
基本用法
验证安装
openssl version
rand: 随机数生成
常用于生成密码等工具
# 将随机数据编码为 Base64 格式openssl rand -base64 12# 生成随机数,编码为十六进制格式openssl rand -hex 8
生成SSH所需的公钥和私钥
使用简单的genrsa
openssl genrsa -out private.key 2048
此时,生成的 private.key 文件是一个 PEM 格式的文件,里面包含了完整的 RSA 私钥信息。RSA 密钥对的特点是:私钥中隐含了公钥的数学信息(公钥由模数 n 和公钥指数 e 组成,而这些都可以从私钥推导出来)。
提取公钥的办法
openssl rsa -in private.key -pubout -out public.key
使用更全能的genpkey
同理,除了RSA,其他加密算法也是可用的。
openssl genpkey -algorithm ed25519 -out private_key.pemopenssl pkey -in private_key.pem -pubout -out public_key.pem
生成网站自签名证书
使用私钥生成一个有效期为 365 天的自签名证书。
openssl req -x509 -new -key private.key -out cert.pem -days 365
文件加密和解密
使用 AES-256-CBC 算法加密和解密文件。
使用-pbkdf2 -iter
参数可生成更安全的密钥。
openssl enc -aes-256-cbc -in file.txt -out file.enc
openssl enc -aes-256-cbc -d -in file.enc -out file.dec.txt -k "yourpassword"
对文件签名和验证
私钥签名:
openssl dgst -sign private_key.pem -out signature.bin data.txt
公钥签名:
openssl dgst -verify public_key.pem -signature signature.bin data.txt
引申和拓展
使用自带的ssh-keygen生成密钥
windows和linux 通常使用ssh-keygen,例如:
# 生成rsa密钥ssh-keygen -t rsa -b 4096# 生成Ed25519,长度固定256, -f可指定文件名ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
# 查看密钥类型ssh-keygen -l -f ~/.ssh/id_rsa.pub
需要注意的是ssh-keygen 默认生成的密钥对并不是 PEM 格式,而是 OpenSSH 自己的格式(常称为 OpenSSH 格式)
#转换为pem格式ssh-keygen -p -m PEM -f ~/.ssh/id_ed25519
ssh-keygen -e -m PEM -f ~/.ssh/id_ed25519.pub > id_ed25519.pem
PEM 格式的密钥与 OpenSSL 是完全兼容的。PEM(Privacy-Enhanced Mail)是一种通用的编码格式,广泛用于存储密钥、证书等加密数据,OpenSSL 原生支持这种格式。无论是私钥、公钥还是证书,只要是以 PEM 格式保存的,OpenSSL 都可以直接读取和处理。
生成UUID
linux
- 命令获取:
uuidgen
- 内核获取:
cat /proc/sys/kernel/random/uuid
windows
Powershell工具
[guid]::NewGuid().ToString()
使用GPG
GPG(GNU Privacy Guard)是一个开源的加密工具,用于保护数据的隐私和完整性。它是 PGP(Pretty Good Privacy)的免费实现,广泛应用于文件加密、数字签名和电子邮件安全。GPG 使用公钥加密体系,结合对称和非对称加密技术,提供强大的安全功能。
GPG常用于Github提交验证、加密、签名等,之后会再补充细节。
Ref
暂无