OpenSSL 的主要功能及其示例命令

发布于:2025-03-16 ⋅ 阅读:(17) ⋅ 点赞:(0)

OpenSSL 是一个功能强大的开源工具包,用于处理各种与加密相关的任务,包括生成密钥、创建证书、加密解密数据、验证证书等。以下是 OpenSSL 的主要功能及其示例命令。


1.生成密钥

1.1 生成 RSA 私钥

openssl genrsa -out private_key.pem 2048

• 说明:生成一个 2048 位的 RSA 私钥,并保存到private_key.pem文件中。

1.2 从私钥提取公钥

openssl rsa -in private_key.pem -pubout -out public_key.pem

• 说明:从私钥文件中提取公钥,并保存到public_key.pem文件中。


2.生成自签名证书

2.1 生成自签名证书

openssl req -x509 -new -key private_key.pem -out certificate.pem -days 365

• 说明:使用私钥生成一个自签名的 X.509 证书,有效期为 365 天,保存到certificate.pem文件中。

2.2 生成证书签名请求(CSR)

openssl req -new -key private_key.pem -out csr.pem

• 说明:生成一个证书签名请求(CSR),保存到csr.pem文件中。CSR 可以提交给证书颁发机构(CA)以获取签名证书。


3.验证证书

3.1 验证证书

openssl x509 -in certificate.pem -text -noout

• 说明:查看证书的详细信息,包括主题、有效期、颁发者等。

3.2 验证证书链

openssl verify -CAfile ca_certificate.pem certificate.pem

• 说明:验证certificate.pem是否由ca_certificate.pem颁发。


4.加密和解密

4.1 使用公钥加密数据

openssl rsautl -encrypt -pubin -inkey public_key.pem -in plaintext.txt -out encrypted.bin

• 说明:使用公钥对plaintext.txt文件进行加密,生成加密后的二进制文件encrypted.bin

4.2 使用私钥解密数据

openssl rsautl -decrypt -inkey private_key.pem -in encrypted.bin -out decrypted.txt

• 说明:使用私钥对encrypted.bin文件进行解密,生成解密后的文件decrypted.txt


5.生成和管理证书颁发机构(CA)

5.1 创建 CA 证书

openssl genrsa -out ca_private_key.pem 2048
openssl req -x509 -new -key ca_private_key.pem -out ca_certificate.pem -days 3650

• 说明:生成一个 CA 私钥和自签名的 CA 证书,有效期为 3650 天。

5.2 签署证书请求

openssl x509 -req -in csr.pem -CA ca_certificate.pem -CAkey ca_private_key.pem -CAcreateserial -out signed_certificate.pem -days 365

• 说明:使用 CA 证书和私钥签署一个证书签名请求(CSR),生成签名后的证书signed_certificate.pem


6.创建和管理密钥库(PKCS#12)

6.1 创建 PKCS#12 密钥库

openssl pkcs12 -export -out keystore.p12 -inkey private_key.pem -in certificate.pem

• 说明:将私钥和证书打包到一个 PKCS#12 密钥库文件keystore.p12中。

6.2 从 PKCS#12 密钥库提取私钥和证书

openssl pkcs12 -in keystore.p12 -out extracted_private_key.pem -nocerts
openssl pkcs12 -in keystore.p12 -out extracted_certificate.pem -nokeys

• 说明:从 PKCS#12 密钥库中提取私钥和证书。


7.生成 Diffie-Hellman 参数

7.1 生成 DH 参数

openssl dhparam -out dhparams.pem 2048

• 说明:生成 2048 位的 Diffie-Hellman 参数,保存到dhparams.pem文件中。


8.生成和管理椭圆曲线密钥

8.1 生成椭圆曲线密钥

openssl ecparam -genkey -name prime256v1 -out ecdsa_private_key.pem

• 说明:生成一个椭圆曲线密钥,使用prime256v1曲线,保存到ecdsa_private_key.pem文件中。

8.2 提取椭圆曲线公钥

openssl ec -in ecdsa_private_key.pem -pubout -out ecdsa_public_key.pem

• 说明:从椭圆曲线私钥文件中提取公钥,保存到ecdsa_public_key.pem文件中。


9.生成和管理证书吊销列表(CRL)

9.1 创建 CRL

openssl ca -gencrl -out crl.pem -config openssl.cnf

• 说明:生成一个证书吊销列表(CRL),保存到crl.pem文件中。需要一个openssl.cnf配置文件。


10.其他常用命令

10.1 查看私钥信息

openssl rsa -in private_key.pem -check

• 说明:检查私钥文件的完整性和详细信息。

10.2 查看公钥信息

openssl rsa -pubin -in public_key.pem -check

• 说明:检查公钥文件的完整性和详细信息。

10.3 查看 CSR 信息

openssl req -in csr.pem -text -noout

• 说明:查看证书签名请求(CSR)的详细信息。

10.4 查看密钥库信息

openssl pkcs12 -info -in keystore.p12

• 说明:查看 PKCS#12 密钥库文件的详细信息。


总结
OpenSSL 是一个功能强大的工具,涵盖了从密钥生成、证书管理到数据加密解密的各个方面。通过上述命令,你可以完成大多数与加密相关的任务。如果你有特定的需求或遇到问题,可以参考 OpenSSL 的官方文档或社区支持。