Openssl

本文详细介绍OpenSSL的功能及其在加密领域的应用,包括对称加密、单向加密等操作方法,同时介绍如何利用OpenSSL生成和管理证书。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenSSL是开源项目一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

三个组件:

openssl: 多用途的命令行工具,包openssl 
  libcrypto: 加密算法库,包openssl-libs 
   libssl:加密模块应用库,实现了ssl及tls,包nss 

openssl命令:
配置文件:/etc/pki/tls/openssl.cnf
两种运行模式:交互模式和批处理模式
openssl version:程序版本号
标准命令、消息摘要命令、加密命令
标准命令: enc, ca, req, …

1、对称加密:
工具: openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc命令:
帮助: man env
openssl enc -[e/d] [-a] [-salt] -Cipher -in /PATH/TO/SOMEFILE -out /PATH/TO/SOMEFILE

                -e:加密
                -d:解密
                -a:将疏浚变成base64编码
              -salt:添加随机数

   -Cipher:加密的算法

加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密:
openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
2.单向加密 :
工具:md5sum, sha1sum, sha224sum,sha256sum… openssl dgst
dgst命令:
帮助:man dgst
openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE

生成用户密码:
passwd命令:
帮助:man sslpasswd
openssl passwd -1 -salt SALT(最多8位)
openssl passwd -1 –salt centos

生成随机数:
帮助:man sslrand
openssl rand -base64|-hex
NUM NUM: 表示字节数;-hex时,每个字符为十六进制,相 当于4位二进制,出现的字符数为NUM*2
公钥加密:
算法:RSA, ELGamal
工具:gpg, openssl rsautl(man rsautl)
数字签名:
算法:RSA, DSA, ELGamal
密钥交换:
算法:dh
DSA: Digital Signature Algorithm
DSS:Digital Signature Standard
RSA:
生成密钥对:man genrsa
生成私钥
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask 077; openssl genrsa –out test.key –des 2048)
从私钥中提取公钥
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
Openssl rsa –in test.key –pubout –out test.key.pub


如何创建CA和申请证书

创建私有CA:
openssl的配置文件:/etc/pki/tls/openssl.cnf
三种策略:匹配、支持和可选
匹配指要求申请填写的信息跟CA设置信息必须一致,支持指必 须填写这项申请信息,可选指可有可无

在服务器主机生成证书

1、 创建所需要的文件

   touch /etc/pki/CA/index.txt 生成证书索引数据库文件   
   echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号     

2、 生成私钥

cd /etc/pki/CA/   
(umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048))    

3、 生成自签名证书

 openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem

-new: 生成新证书签署请求
-x509: 专用于CA生成自签证书
-key: 生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径

在客户端生成证书签署请求

  • 给web服务器生成私钥
 (umask 066; openssl genrsa -out /etc/pki/tls/private/test.key 2048) 
  • 生成证书申请文件
openssl req -new -key /etc/pki/tls/private/test.key -days 365 -out etc/pki/tls/test.csr    
  • 将证书请求文件传输给CA
    scp命令

  • CA签署证书,并将证书颁发给请求者

openssl ca -in /tmp/test.csrout /etc/pki/CA/certs/test.crt -days 365   

注意:默认国家,省,公司名称三项必须和CA一致

证书管理

查看证书中的信息:

openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates    
openssl ca -status SERIAL 查看指定编号的证书状态    

吊销证书
在客户端获取要吊销的证书的

 serial openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject   

在CA上,根据客户提交的serial与subject信息,对比检验是 否与index.txt文件中的信息一致,吊销证书:

openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem   

指定第一个吊销证书的编号
注意:第一次更新证书吊销列表前,才需要执行 echo 01 > /etc/pki/CA/crlnumber
更新证书吊销列表

openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem

查看crl文件:

 openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
### OpenSSL 使用指南与常见问题解答 OpenSSL 是一个开源的加密工具包,广泛用于实现安全通信协议(如 TLS/SSL)。以下是关于 OpenSSL 的使用指南以及一些常见问题的解答。 #### 1. 安装 OpenSSL 在 Windows 系统上安装 OpenSSL 可以通过预编译的二进制文件或自行编译完成。对于大多数用户来说,推荐直接下载并安装官方提供的二进制版本[^1]。 - **下载地址**:可以从项目地址提供的资源中获取适合的版本。 - **验证安装**:安装完成后,在命令行输入以下命令检查是否成功: ```bash openssl version ``` 如果返回 OpenSSL 的版本号,则表示安装成功[^2]。 #### 2. OpenSSL 基本命令 OpenSSL 提供了丰富的命令行工具,可以用来生成密钥、证书以及执行加密操作。以下是一些常用的命令: - **生成 RSA 私钥**: ```bash openssl genrsa -out private_key.pem 2048 ``` 此命令生成一个 2048 位的 RSA 私钥,并保存为 `private_key.pem` 文件。 - **从私钥生成公钥**: ```bash openssl rsa -in private_key.pem -pubout -out public_key.pem ``` 此命令将私钥转换为公钥,并保存为 `public_key.pem` 文件。 - **生成自签名证书**: ```bash openssl req -x509 -new -nodes -key private_key.pem -sha256 -days 365 -out certificate.crt ``` 此命令生成一个有效期为 365 天的自签名证书。 #### 3. 常见问题及解决方法 - **问题 1:无法找到 openssl.exe** - **原因**:可能是未正确配置环境变量。 - **解决方法**:将 OpenSSL 的安装路径添加到系统的 PATH 环境变量中。例如,如果安装路径为 `C:\OpenSSL-Win64\bin`,需要将其添加到 PATH 中。 - **问题 2:openssl version 报错** - **原因**:可能是安装过程中未正确配置依赖库。 - **解决方法**:确保系统已安装必要的依赖项(如 Visual C++ Redistributable),并重新运行安装程序[^2]。 - **问题 3:生成证书时提示错误** - **原因**:可能是输入的参数不完整或格式错误。 - **解决方法**:仔细检查命令中的每个参数,确保符合 OpenSSL 的要求。例如,`-days` 参数必须为正整数,且 `-key` 参数指定的私钥文件必须存在。 #### 4. 进阶功能 除了基本的密钥和证书管理外,OpenSSL 还支持更复杂的加密操作,例如数据加密和解密。 - **加密文件**: ```bash openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.bin ``` 此命令使用 AES-256-CBC 算法加密文件 `plaintext.txt`,并将结果保存为 `encrypted.bin`。 - **解密文件**: ```bash openssl enc -aes-256-cbc -d -in encrypted.bin -out decrypted.txt ``` 此命令解密文件 `encrypted.bin`,并将结果保存为 `decrypted.txt`。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值