首页 > 其他分享 >OpenSSL

OpenSSL

时间:2024-10-26 13:20:54浏览次数:9  
标签:TLS 加密 证书 openssl OpenSSL pem

OpenSSL 概述

OpenSSL 是一个开源的、安全传输协议实现工具,广泛应用于数据加密与解密、证书生成与管理以及其他安全性相关的任务。在现代网络安全中,OpenSSL 被用于构建和维护 SSL/TLS 通信,确保数据在传输过程中的机密性和完整性。

简单来说,OpenSSL 是一个用于加解密 SSL 文件的工具,但它的功能远远不止于此。

在这里插入图片描述

定义

OpenSSL 是一个多功能的命令行工具和密码库,主要用于构建基于公共密钥基础设施(PKI)和 HTTPS 的加密方案。它支持各种加密算法(例如 RSA、AES 等),提供密钥生成和证书管理功能,还能够实现 SSL/TLS 协议,确保数据传输安全。

  • 公钥基础设施 (PKI):OpenSSL 支持公钥加密方案,可以生成公钥和私钥,并利用证书管理加密和签名任务。
  • SSL/TLS 支持:OpenSSL 提供了 SSL/TLS 协议实现,帮助构建安全的数据传输。
  • 加密算法:OpenSSL 支持对称加密和非对称加密算法,以及杂凑算法和数字签名,满足多种加密需求。

主要组件

OpenSSL 主要由以下组件构成:

  • OpenSSL 公用程序 (openssl package):这是 OpenSSL 的命令行工具,用于执行各种安全任务,包括加密、解密、生成证书等。
  • SSL 库 (SSL package):提供实现 SSL/TLS 协议的功能,支持安全的互联网通信。
  • 密码库 (crypto package):包含常用的加密算法和数据处理函数,例如 SHA256、MD5、AES、RSA 等算法的实现。

运行模式

OpenSSL 提供两种运行模式,以满足不同的使用需求:

  • 交互模式:允许用户在命令行中逐步输入命令。这种模式适合进行调试、学习和单步操作。
  • 批处理模式:支持通过脚本或命令文件批量执行操作,适合在自动化脚本中集成,提升操作的高效性和一致性。

常用操作示例

  1. Base64 编码和解码
    OpenSSL 可以用来进行 Base64 编码和解码,适用于处理二进制数据和文本数据的转换。例如:

    # Base64 编码
    echo "Hello World" | openssl base64
    # Base64 解码
    echo "SGVsbG8gV29ybGQK" | openssl base64 -d
    
  2. RSA 加密和解密
    RSA 是一种常用的非对称加密算法。通过 OpenSSL 可以方便地生成 RSA 密钥对,并进行加解密操作。

    • 生成私钥
      openssl genrsa -out private.pem
      
    • 生成公钥
      openssl rsa -in private.pem -pubout -out public.pem
      
    • 解析 ASN.1 编码的私钥
      openssl asn1parse -i -in private.pem
      
    • 解析 ASN.1 编码的公钥
      openssl asn1parse -i -in public.pem
      
  3. 文件加密和解密
    OpenSSL 可使用 RSA 实现文件的加密与解密。一般情况下,公钥用于加密,私钥用于解密:

    • 公钥加密文件
      openssl rsautl -encrypt -in hello.txt -inkey public.pem -pubin -out hello.en
      
    • 私钥解密文件
      openssl rsautl -decrypt -in hello.en -inkey private.pem -out hello.de
      

FIPS 兼容的 OpenSSL (openssl-fips)

openssl-fips 是符合 FIPS(联邦信息处理标准)的 OpenSSL 版本,用于符合政府机构和行业所需的安全要求。FIPS 是一组为信息处理和加密标准提供安全指导的联邦标准,OpenSSL-FIPS 版本在安全算法和库函数上符合 FIPS 标准,确保适用于严格的合规场景。

证书文件格式的区别

在 SSL/TLS 配置中,常见的文件格式有 .crt.pem.pfx.cer.key 等。它们分别用于存储证书、公钥、私钥以及完整的证书链。

  • .pem:最常用的证书文件格式,用于存储公钥、私钥或证书链。
  • .crt/.cer:证书文件,通常包含公钥和证书信息。
  • .pfx:包含证书链和私钥,通常用于 Windows 系统。
  • .key:私钥文件,通常用于与 .crt 文件配对。

证书创建

  1. 创建自签名根证书
    自签名证书是由用户自己签署的根证书,可用于内部服务或测试环境。

    • 生成私钥
      openssl genrsa -out prikey2048.pem 2048
      
    • 生成根证书(一次性写入证书信息):
      openssl req -new -x509 -key prikey2048.pem -out root_ca_self.crt -days 365 -subj /C=CN/ST=BeiJing/L=BeiJing/O=test/OU=test/CN=www.test.com/[email protected]
      
  2. 创建证书签名请求 (CSR)
    CSR 文件用于申请第三方 CA 签署证书。

    • 生成私钥
      openssl genrsa -out cert_prikey2048.pem 2048
      
    • 生成证书申请
      openssl req -new -key cert_prikey2048.pem -out cert.csr -subj /C=CN/ST=ZheJiang/L=HangZhou/O=test2/OU=test2/CN=www.test2.com/[email protected]
      

此版本详尽地介绍了 OpenSSL 的基本功能、主要组件、运行模式、常用操作、文件格式及其区别,并详细说明了证书生成的过程,使其内容更加完整且结构清晰。

OpenSSL 主要版本的汇总

1.0 系列

  • OpenSSL 1.0.0(2010年3月)

    • 引入新的密码算法和增强的加密性能。
    • 支持 SSL v2/v3 和 TLS v1 协议,并增加了对 AES、SHA2 等算法的优化。
  • OpenSSL 1.0.1(2012年3月)

    • 引入对 TLS 1.2 和 DTLS 1.2 协议的支持。
    • 增加了新的 AES-GCM 和 ChaCha20-Poly1305 加密套件。
    • 该版本包含 “Heartbleed” 漏洞 (CVE-2014-0160),导致大量版本用户受到影响。
  • OpenSSL 1.0.2(2015年1月)

    • 支持 TLS-FRP 以及 HTTP/2 协议。
    • 增加了 X25519、Ed25519 和 ChaCha20-Poly1305 加密算法。
    • 这是 1.0 系列最后一个 LTS 版本,长期维护到 2019 年。

1.1 系列

  • OpenSSL 1.1.0(2016年8月)

    • 重构了代码库,引入了更高的安全性和性能改进。
    • 支持新的加密算法,包括 EdDSA、Poly1305 和 SipHash。
    • 引入自动化的内存管理,提升了代码稳定性。
    • 这是一个重大更新,许多旧版本 API 被移除或弃用。
  • OpenSSL 1.1.1(2018年9月)

    • 支持 TLS 1.3,显著提高了连接速度和安全性。
    • 优化了随机数生成器、密码套件和数据结构。
    • 加入新加密套件,如 X448 和 Ed448,以增强安全性。
    • 这是一个长期支持版本,将维护至 2023 年,并成为许多现代系统和应用程序的首选版本。

3.0 系列

  • OpenSSL 3.0.0(2021年9月)

    • 引入全新的 FIPS 模块,以满足联邦信息处理标准的安全要求。
    • 重新设计了模块化架构,支持更灵活的加密算法插件系统。
    • 强化了对混合加密(post-quantum 和传统加密)的支持,增强抗量子计算攻击的能力。
    • 改进了错误处理、内存安全,并提供更加详细的 API 文档。
    • 这是一个重大版本更新,对加密库进行了全面优化和扩展。
  • OpenSSL 3.1.0(2023年3月)

    • 继续扩展对量子安全算法的支持,包含对 NIST 推荐的混合加密方案的支持。
    • 提升了 TLS 1.3 性能和兼容性,进一步增强了安全性和稳定性。
    • 改进了开发人员的 API 使用体验,提供了更清晰的文档和代码示例。
    • OpenSSL 3.1.x 系列是当前的 LTS(长期支持)版本,计划维护到 2026 年。

3.2 系列及未来计划

  • OpenSSL 3.2.x 系列(预计 2024 年中期发布)
    • 计划进一步增强抗量子计算攻击的能力,支持最新的混合加密标准。
    • 增强云环境下的密钥管理和安全性。
    • 针对高性能应用进行了优化,例如负载均衡器、微服务和容器化应用。

总结

OpenSSL 版本的发展体现了不断加强的安全性、协议支持和性能优化。从 1.0 系列的传统 SSL/TLS 支持到 3.0 系列的量子安全算法和模块化架构,OpenSSL 的每次重大版本更新都带来了显著的技术进步,使其在现代网络安全和加密应用中占据重要地位。

标签:TLS,加密,证书,openssl,OpenSSL,pem
From: https://blog.csdn.net/Interview_TC/article/details/143251903

相关文章

  • openssl生成esxi过期证书
    1,使用openssl生成证书步骤1:生成私钥和自签名证书使用以下命令一次性生成一个新的私钥和自签名证书:shell复制代码opensslreq-x509-nodes-days365-newkeyrsa:2048-keyoutmycert.key-outmycert.crt-x509:表示生成一个自签名证书。-nodes:不对私钥加密(即不需要密码......
  • 使用OpenSSl库实现AES-GCM-128算法(C语言)
    在C语言中使用OpenSSL库实现AES-GCM-128算法,并生成GMAC(GaloisMessageAuthenticationCode)消息认证码,通过以下步骤完成:初始化加密环境:创建一个EVP_CIPHER_CTX结构体,用于存储加密过程中的所有必要信息。设置加密算法:指定使用AES-GCM模式,以及密钥和IV(初始化向量)。处理附加认证......
  • OpenSSL异步模式流程梳理
    源码来源于OpenSSLMasterCommitIDd550d2aae531c6fa2e10b1a30d2acdf373663889。总览核心入口函数为ssl_start_async_job,以SSL_do_handshake为入口举例分析,同时通过标注步骤【1~N】,来明确阅读的顺序。步骤【1】到步骤【18】为一个阶段步骤【19】到步骤【23】为一个阶......
  • 使用OpenSSl库实现AES-GCM-128算法(C语言)
    在C语言中使用OpenSSL库实现AES-GCM-128算法,并生成GMAC(GaloisMessageAuthenticationCode)消息认证码,通过以下步骤完成:初始化加密环境:创建一个EVP_CIPHER_CTX结构体,用于存储加密过程中的所有必要信息。设置加密算法:指定使用AES-GCM模式,以及密钥和IV(初始化向量)。处理附加认证......
  • Windows下给Visual Studio添加OpenSSL
    一、安装OpenSSL1.下载OpenSSLWin32/Win64OpenSSLInstallerforWindows-ShiningLightProductions可以下载已经编译好的包含lib和include文件的安装包有Win32和Win64可选,这里的位数指的是你使用OpenSSL开发出来的软件的位数版本,而不是你计算机的位数。注意,不要下载......
  • Linux(银河麒麟)升级openssh和openssl
    Linux升级openssh升级包下载地址:openssh:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gzopenssl:https://github.com/openssl/openssl/releases/download/openssl-3.3.2/openssl-3.3.2.tar.gzzlib:https://zlib.net/fossils/zlib-1.3.tar.gz备份原......
  • Kylinv10 curl报错:SSLv3_client_method version OPENSSL_1_1_0 not define
    curl http://127.0.0.1出现问题#curlhttps://www.example.comcurl:relocationerror:/lib64/libcurl.so.4:symbolSSLv3_client_methodversionOPENSSL_1_1_0notdefinedinfilelibssl.so.1.1withlinktimereference错误是/usr/lib64中的动态链接中无法识别......
  • openssl 1.1.1 安装
    https://download.csdn.net/blog/column/10942194/125836859root@VM-0-10-ubuntu:/home/ubuntu#wgethttps://www.openssl.org/source/openssl-1.1.1n.tar.gzopenssl:errorwhileloadingsharedlibraries:libssl.so.1.1在执行opensslversion出现如下错误:openssl:erro......
  • openssl实验截图记录
                                    ......
  • crit: Microsoft.AspNetCore.Server.Kestrel[0] Unable to start Kestrel. Interop+Cr
    域名证书没有放在指定的位置错误信息crit:Microsoft.AspNetCore.Server.Kestrel[0]UnabletostartKestrel.Interop+Crypto+OpenSslCryptographicException:error:2006D080:BIOroutines:BIO_new_file:nosuchfileatInterop.Crypto.CheckValidOpenSslHandle(Saf......