一、实验前置准备
系统版本:OpenEuler 22.04
实验平台:天枢一体化虚拟仿真平台
(1). OpenSSL安装与版本验证
openEuler默认预装OpenSSL,但需确认完整性和版本(推荐1.1.1及以上,支持主流国际算法):
# 检查OpenSSL版本 |
正常输出示例:OpenSSL 1.1.1k FIPS 25 Mar 2021(openEuler 22.03 LTS默认版本)。
二、实验1:对称加密(AES-256-CBC)- 文件加解密
AES是国际标准对称加密算法(NIST认证),CBC是常用的分组加密模式,适合小数据加密,也是加密通信的基础。
实验步骤
(1)创建测试文件(用于验证加解密效果):
echo "OpenEuler OpenSSL AES Encryption Test" > test.txt |
(2)生成AES密钥和初始化向量(IV):
AES-256需要256位(32字节)密钥,CBC模式要求IV长度等于分组长度(AES分组为128位/16字节):
# 生成256位AES密钥(16进制格式) |
(3)AES-256-CBC加密文件:
openssl enc -aes-256-cbc -in test.txt -out test_encrypted.enc -K $(cat aes_key.txt) -iv $(cat aes_iv.txt) |
命令解释:
- enc:OpenSSL加密/解密核心指令;
- -aes-256-cbc:指定算法为AES-256-CBC(国际标准对称算法);
- -in/-out:输入/输出文件路径;
- -K:指定16进制格式的密钥(区分大小写,需与生成的一致);
- -iv:指定16进制格式的初始化向量。
(4)解密验证:
openssl enc -d -aes-256-cbc -in test_encrypted.enc -out test_decrypted.txt -K $(cat aes_key.txt) -iv $(cat aes_iv.txt) |
关键参数:-d表示解密模式。
(5)验证结果:
cat test_decrypted.txt |
输出应与原文件test.txt完全一致,说明AES加解密成功。
三、实验2:非对称加密(RSA)- 密钥交换与签名验签
RSA是国际标准非对称加密算法,用于加密通信的密钥交换(如TLS握手)和数字签名(防篡改/伪造),实验步骤如下:
实验步骤
(1)生成RSA私钥(2048位,安全与性能平衡):
openssl genrsa -out rsa_private.key 2048 |
解释:genrsa生成RSA私钥,2048位是主流安全长度(4096位更安全但速度慢)。
(2)从私钥提取公钥:
openssl rsa -in rsa_private.key -pubout -out rsa_public.key |
解释:-pubout指定输出公钥(公钥可公开,私钥需严格保密)。
(3)公钥加密小数据(RSA适合加密密钥/短数据):
openssl rsautl -encrypt -inkey rsa_public.key -pubin -in test.txt -out test_rsa_encrypted.enc |
解释:
- rsautl:RSA加解密工具;
- -encrypt:加密模式;
- -pubin:表示输入的是公钥文件。
(4)私钥解密验证:
openssl rsautl -decrypt -inkey rsa_private.key -in test_rsa_encrypted.enc -out test_rsa_decrypted.txt |
验证:cat test_rsa_decrypted.txt应与原文件内容一致。
(5)扩展:数字签名与验签(通信防篡改):
# 用私钥生成SHA256签名 |
验签成功输出:Verified OK;若修改test.txt后验签,会输出Verification Failure。
四、实验3:TLS加密通信(客户端-服务器模拟)
这是最贴近实际场景的加密通信实验,OpenSSL的s_server/s_client模拟基于RSA+AES的TLS加密通信(国际算法组合)。
实验步骤
(1)生成服务器自签名证书(实验用):
|
命令解释:
- -x509:生成自签名证书(无需CA认证,仅实验用);
- -newkey rsa:2048:同时生成2048位RSA私钥;
- -nodes:私钥不加密(实验方便,生产环境需加密)。
执行后会提示填写证书信息(国家、省份、组织等),Common Name(CN)建议填[127.0.0.1](127.0.0.1)(服务器本地IP),其余可随意填写。
(2)启动TLS服务器(监听12345端口):
|
解释:
- -tls1_2:指定TLS 1.2版本(主流安全版本,支持AES/RSA等国际算法);
- 启动后服务器会输出ACCEPT,等待客户端连接。
(3)启动TLS客户端(新终端执行):
保持服务器终端运行,打开新终端执行:
|
连接成功后,客户端会输出TLS握手信息,包括加密套件(如ECDHE-RSA-AES256-GCM-SHA384,包含RSA和AES国际算法)。
(4)测试加密通信:
- 在客户端终端输入任意文字(如Hello OpenEuler TLS Encryption!),按回车;
- 服务器终端会收到该文字;在服务器终端输入文字,客户端也会收到;
- 所有传输内容均通过TLS加密,而非明文(可通过抓包工具验证,如wireshark)。
(5)停止实验:
分别在客户端/服务器终端按Ctrl+C退出即可。