实验8 加密、数字签名与证书
1、实验目的
-
了解对称加密、非对称加密体制概念
-
了解散列函数、数字签名和数字证书的概念和理论
-
掌握基于Openssl的对称加密、密钥对的创建和应用
-
掌握基于Openssl数字签名和数字证书的创建和应用
2、实验环境
- 硬件要求:阿里云云主机ECS 一台。
- 软件要求:Linux/Windows 操作系统
3、实验内容
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
参考资料:
https://www.openssl.org/
https://gitee.com/mirrors/openssl?utm_source=alading&utm_campaign=repo#download
https://www.jianshu.com/p/fb2ae3dc7986
https://slproweb.com/products/Win32OpenSSL.html
https://www.tencentcloud.com/zh/document/product/1007/30185
3.1对称加密
安装Openssl,并准备任意内容的文本文档lx.txt,利用对称加密算法对lx.txt进行加密和解密操作。
要求:要有过程描述文字,解释当前操作以及参数含义,并提供相应操作截图
3.2 散列函数
计算lx.txt的MD5和SHA256散列值
3.3 非对称加密
创建2048位的公钥密码体制RSA密钥对。利用创建的公钥加密lx.txt,私钥进行解密操作
3.4 数字签名
对文件lx.txt进行数字签名并鉴别
3.5 证书
使用openssl创建自签名证书
4、实验结果与分析
4.1 对称加密
4.1.1 安装Openssl
yum install Openssl Openssl devel -y
4.1.2 创建lx.txt文件
输入下方命令,编辑txt文本,
vi lx.txt
输入指令查看txt的内容
cat lx.txt
4.1.3 加密操作
openssl enc -e -des -in lx.txt -out encrypt.txt -pass pass:123456
4.1.4 解密操作
openssl enc -d -des -in encrypt.txt -out decrypt.txt -pass pass:123456
4.2 散列函数
4.2.1 计算lx.txt的MD5散列值
openssl md5 -out MD5.txt lx.txt
4.2.2 计算SHA256散列值
openssl sha256 -out SHA256.txt lx.txt
4.3 非对称加密
利用创建的公钥加密lx.txt,私钥进行解密操作
4.3.1 创建 2048 位的私钥
openssl genrsa -out private_key.pem 2048
4.3.2 创建2048位的公钥密码体制RSA密钥对
openssl rsa -in private_key.pem -pubout -out public_key.pem
4.3.3 用公钥加密
利用公钥加密lx.txt文件的内容保存为“pb_lx.txt.encrypt”,然后输入cat命令查看加密后的内容。
openssl rsautl -encrypt -in lx.txt -inkey public_key.pem -pubin -out pb_lx.txt.encrypt
cat pb_lx.txt.encrypt
4.3.4 用私钥解密
利用私钥解密“pb_lx.txt.encrypt”文件中的内容保存到“pb_lx.txt.decrypt”,再利用cat命令查看解密后的内容。
openssl rsautl -decrypt -in pb_lx.txt.encrypt -inkey private_key.pem -out pb_lx.txt.decrypt
cat pb_lx.txt.decrypt
4.4 数字签名
4.4.1 私钥签名
输入openssl命令生成私钥签名保存为“pr_lx.txt.signed”,再输入cat命令查看文件中的内容。
openssl dgst -sha1 -sign private_key.pem -out pr_lx.txt.signed lx.txt
cat pr_lx.txt.signed
4.4.2 公钥鉴别验证
openssl dgst -sha1 -verify public_key.pem -signature pr_lx.txt.signed lx.txt
4.5 证书
4.5.1 创建根目录
openssl genrsa -out rootCA.key 4096
4.5.2 使用 CSR 生成自签名证书
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 365 -out certificate.crt
4.5.3 创建证书密钥
openssl genrsa -out xju.com.key 4096
4.5.4 配置certificate.conf文件
输入vi命令进入编辑模式,配置如下内容,其中IP.1为服务器地址。编辑完成后输入“:wq”退出编辑模式,
vi certificate.conf
[req]
default_bits = 4096
prompt = no
req_extensions = req_ext
distinguished_name = dn
[dn]
C = CN
ST = HuBei
L = XiangYang
O = xju
OU =xju
emailAddress = 2638801586@qq.com
CN = xxx.com
[req_ext]
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = xxx.com
IP.1 = 47.116.112.218
4.5.5创建签名,生成证书
openssl req -new -key xju.com.key -config certificate.conf -out xju.com.csr
openssl x509 -req -in xju.com.csr -CA certificate.crt -CAkey rootCA.key -CAcreateserial -out xju.com.crt -days 365 -sha256 -extfile certificate.conf -extensions req_ext
5、实验小结
(包括遇到的特定问题和解决办法、心得体会、意见与建议等)
5.1问题与解决办法:
问题1、openssl解密时,提示找不到文件。
解决方法:仔细查看命令是否正确,文件名是否输入正确。
问题2、配置certificate.conf文件不知道配置内容。
解决方法:查询资料,内容与证书签名一致,IP.1为服务器地址。
5.2心得体会:
通过这次实验,我深入了解了 OpenSSL 的基本用法和其在加密、解密、签名和证书管理方面的强大功能。我意识到网络安全在现代社会中的重要性,并更加尊重那些为保护我们数据安全而工作的专业人员。
在实验过程中,我遇到了一些挑战,比如理解复杂的命令参数和处理错误消息。但是,通过查阅文档、尝试不同的命令选项和从错误中学习,我逐渐克服了这些困难,并从中获得了宝贵的经验。
此外,我还意识到安全实践的重要性,比如使用强密码、定期更新证书和保持软件的最新版本。这些实践可以帮助我们保护自己的数据和系统免受潜在的安全威胁。