OpenSSL命令行工具功能强大,涵盖了密钥、证书、加密、网络测试等多个方面。为方便查阅,我将其中核心功能和常用命令整理如下:

一、密钥管理

密钥是安全通信的基础,OpenSSL支持生成和管理多种算法密钥。

命令示例

主要功能

openssl  genpkey  -algorithm  RSA  -out  privkey.pem

生成RSA私钥

openssl  genpkey  -algorithm  RSA  -out  privkey.pem  -aes-128-cbc  -pass  pass:hello

生成带密码的RSA私钥

openssl  genrsa  -out  private.key  2048

生成2048位RSA私钥

openssl  rsa  -in  private.key  -pubout  -out  public.key

从私钥提取公钥

openssl  rsa  -in  private.key  -text  -noout

以文本形式查看私钥信息

openssl  rsa  -in  private.key  -check

检查私钥的完整性和正确性

openssl  pkey  -in  key.pem  -text  -noout

查看密钥详细信息(适用于多种密钥类型)

注意:为保障安全,建议RSA密钥长度至少为2048位

genrsa等旧命令在OpenSSL  3.0中已被genpkey取代

二、证书管理

涉及SSL证书申请(CSR)、签发、查看和格式转换。

命令示例

主要功能

openssl  req  -new  -key  privkey.pem  -out  cert.csr

创建证书签名请求(CSR)

openssl  req  -new  -key  privkey.pem  -out  cert.csr  -subj  "/C=CN/..."

无交互式提示创建CSR

openssl  req  -text  -in  cert.csr  -noout  -verify

查看并验证CSR内容

openssl  x509  -req  -in  cert.csr  -signkey  privkey.pem  -out  cert.crt

使用私钥签发自签名证书

openssl  x509  -in  certificate.crt  -text  -noout

查看证书的详细信息(如有效期、颁发者等)

openssl  verify  -CAfile  ca-bundle.crt  cert.pem

验证证书链的有效性

openssl  pkcs12  -export  -out  cert.pfx  -inkey  key.key  -in  cert.crt

将证书和密钥打包为PKCS#12(.pfx)格式

openssl  pkcs12  -in  cert.pfx  -nocerts  -out  key.key  -nodes

从PKCS#12文件中提取私钥

重要:使用自签名签发的证书通常不被系统信任,仅用于测试

生产环境应使用受信任的CA签发的SSL证书

三、加密与解密

OpenSSL支持使用对称加密算法对文件或数据进行加密解密。

命令示例

主要功能

openssl  enc  -aes-256-cbc  -salt  -in  plain.txt  -out  encrypted.enc

使用AES-256算法加密文件(会提示输入密码)

openssl  enc  -aes-256-cbc  -d  -in  encrypted.enc  -out  decrypted.txt

解密AES-256加密的文件

openssl  enc  -aes-128-cbc  -e  -in  plain.txt  -out  cipher.txt  -k  mypassword

使用密码加密文件

openssl  enc  -l

列出所有支持的对称加密算法-

注意:enc命令的ecb模式不够安全,应优先使用cbc、cfb、ofb或ctr模式-

使用-k参数直接在命令行中指定密码不够安全,应尽量避免。

四、摘要与签名

用于生成数据的指纹(摘要)、签名和验证。

命令示例

主要功能

openssl  dgst  -sha256  -out  file.sha256  file.txt

计算文件的SHA-256摘要

openssl  dgst  -sha256  -sign  privkey.pem  -out  signature.bin  file.txt

使用私钥对文件内容签名

openssl  pkeyutl  -sign  -in  data.txt  -inkey  privkey.pem  -out  sig.bin

使用私钥签名

openssl  pkeyutl  -verify  -in  data.txt  -sigfile  sig.bin  -inkey  pubkey.pem  -pubin

使用公钥验证签名

安全提示:MD5、SHA-1等旧算法已被证实存在弱点,在安全性要求高的场景中应使用SHA-256或更新算法

五、网络测试与诊断

模拟客户端或服务器,用于调试SSL证书连接。

命令示例

主要功能

openssl  s_client  -connect  www.example.com:443

作为客户端连接到远程SSL服务,获取证书、协商的密码套件等信息

openssl  s_server  -key  key.pem  -cert  cert.pem  -accept  44330

在本地端口启动一个简易的SSL/TLS测试服务器(用于客户端测试)

openssl  ciphers  -v

列出当前OpenSSL支持的所有SSL/TLS密码套件

六、信息查询与辅助

获取OpenSSL本身及系统加密功能的信息。

命令示例

主要功能

openssl  version  -a

查看OpenSSL的详细版本和构建信息

openssl  list  -cipher-commands  或  -digest-commands  或  -public-key-algorithms

列出支持的加密算法、摘要算法或公钥算法

openssl  rand  -base64  32

生成32字节的随机Base64字符串

openssl  speed

测试当前机器上各种加密算法的运算速度

七、获取更详细的帮助

每个OpenSSL子命令都有丰富的选项,使用以下方式可以获得最权威、最详细的参数说明:

bash

复制

下载

查看openssl程序整体的概览

openssl  

help

查看特定子命令(如  req,  x509,  enc)的详细手册

man

  openssl-req

man

  openssl-x509

man  openssl-enc

如果有特定的使用场景(例如配置HTTPS服务器、为代码签名、或搭建私有CA),我可以为你提供更具体的操作步骤和注意事项。