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

embedded/2025/3/16 16:45:54/

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 的官方文档或社区支持。


http://www.ppmy.cn/embedded/173110.html

相关文章

CSDN博客:Markdown编辑语法教程总结教程(下)

❤个人主页:折枝寄北的博客 Markdown编辑语法教程总结 前言1. LaTex数学公式2. 插入不同类别的图2.1 插入甘特图2.2 插入UML图2.3 插入Mermaid流程图2.4 插入Flowchart流程图2.5 插入classDiagram类图 3. CSDN快捷键4. 字体相关设置4.1 字体样式改变4.2 字体大小改变…

3.数据结构-串、数组和广义表

串、数组和广义表 3.1串3.1.1串的类型定义、存储结构及其运算串的顺序存储串的堆式顺序存储结构串的链式存储 3.1.2 串的模式匹配算法BF算法*KMP算法(待更新) 3.2数组3.2.1数组的顺序存储3.2.2特殊矩阵的压缩存储对称矩阵三角矩阵对角矩阵 3.3广义表*案例…

Python(学习一)

做网站有成熟的框架像FLASK、DJANGO、TORNADO,写爬虫有好用到哭的REQUESTS,还有强大到没盆友的SCRAPY 随着NUMPY、SCIPY、MATLOTLIB等众多第三方模块的开发和完善,不仅支持py支持各种数学运算,还可以绘制高质量的2D和3D图像&…

Spring Boot 中 BootstrapRegistryInitializer 的作用与示例

一、核心作用 BootstrapRegistryInitializer 是 Spring Boot 启动流程中的早期初始化扩展点,主要用于在应用上下文(ApplicationContext)创建之前,向 BootstrapRegistry 注册必要对象或执行自定义逻辑。其核心作用包括&#xff1a…

C++的名称空间

C++的名称空间(namespace)是一种用于组织代码、防止命名冲突的机制。以下是名称空间的详细说明和使用建议: 1. 名称空间的定义 使用namespace关键字定义,内部可包含变量、函数、类等: namespace MyNamespace {int a;void func() {} }2. 访问方式 作用域解析运算符:::显…

怎么鉴别金媒v10.51和v10.5的区别!单单从CRM上区分!

2.怎么鉴别程序是10.5还是10.51 ?* 作为商业用户,升级完全没有这个担心,但是这次升级从全局来看清晰度不是很高,不像10.5的升级后台UI都变化了!你说有漏洞但是我没遇到过 所以我也不知道升级了啥只能看版本数字是无法区…

[Sum] C++STL oj常用API

目录 一、头文件管理 1.1 万能头文件(快捷方式) 1.2 标准头文件规范 二、输入输出处理 2.1 基本输入方式 2.2 格式化输出 三、常用 API 详解 3.1 字符串操作( ) 3.2 容器操作 Vector(动态数组) S…

maven笔记

maven介绍和作用 Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。 主要作用的理解: 依赖管理: 在编写项目时我…