> # ♻️ 资源
> **大小:** 1.61MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010445**](https://www.yuque.com/sxbn/ks/100010445)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87390784**](https://download.csdn.net/download/s1t16/87390784)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# **第二部分:python+openssl实验报告**
## **一、实验内容**
1.安装openSSL
2.编写一个服务器的程序,服务器端的功能是建立SSL网络服务,接受客户端的SSL连接,收发SSL消息。
3.编写一个客户端的程序,客户端的功能是通过SSL协议连接服务器,收发SSL消息。
4.生成SSL证书。
5.撰写试验报告,包括了服务器端和客户端运行结果截图,以及生成的SSL证书。
## **二、实验框架**
程序分为两部分,客户端和服务器端,我们的目的是利用SSL/TLS的特性保证通信双方能够互相验证对方身份(真实性),并保证数据的完整性, 私密性。服务器认证阶段:1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证
**对于客户端而言:发送6次100byte的数据,显示客户端发送时长,以及客户端数据的时长,并显示平均时长**
**对于服务端而言:接收客户端的数据,并向客户端发送1000byte的数据,显示服务端收到时间,发送时间,以及平均时间**。
![Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.017.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711509130413-d886ef3f-d59c-47de-9d57-929dc7a90722.png#averageHue=%23282828&clientId=u668d35f8-d388-4&from=paste&height=706&id=ue30bd953&originHeight=882&originWidth=676&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=32508&status=done&style=none&taskId=ueea6c5fb-2ca2-4d4f-8eca-6bc3330272a&title=&width=540.8)
## **三、实验步骤**
(1)生成证书
同理,用openssl程序
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem
![Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.018.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711509143296-4df0d13c-29fb-4455-8f27-b04ae8f6306b.png#averageHue=%23040302&clientId=u668d35f8-d388-4&from=paste&height=349&id=u250805dd&originHeight=436&originWidth=1436&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=42541&status=done&style=none&taskId=uad9b8105-82f6-4872-8a05-51f7a14d719&title=&width=1148.8)
(2)Pip openssl库
Pip安装openssl库后。
![Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.019.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711509152730-bb4a8416-8cba-433e-a01c-082ab034d4e6.png#averageHue=%23f9f8f7&clientId=u668d35f8-d388-4&from=paste&height=338&id=u9f0e20c1&originHeight=423&originWidth=916&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=45513&status=done&style=none&taskId=ub961e237-41d4-447a-b5b4-fe7fa4ac4f4&title=&width=732.8)
(3)编写客户端和服务端
代码基本和c++类似,框架以及概括了基本代码,代码截图如下:
对于客户端而言:发送6次100byte的数据,显示客户端发送时长,以及客户端数据的时长,并显示平均时长
对于服务端而言:接收客户端的数据,并向客户端发送1000byte的数据,显示服务端收到时间,发送时间,以及平均时间。
![Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.020.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711509163508-81947393-0640-4841-8d34-86102c7c76ec.png#averageHue=%2392935e&clientId=u668d35f8-d388-4&from=paste&height=816&id=uea6c0a6f&originHeight=1020&originWidth=1920&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=175840&status=done&style=none&taskId=u9b3a322a-c852-47b1-8da0-c8fa2f266aa&title=&width=1536)
客户端代码:
```python
import socket, ssl, pprint, time
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ssl_s=ssl.wrap_socket(s,cert_reqs=ssl.CERT_REQUIRED,ca_certs="cert.pem")
ssl_s.connect(("127.0.0.1", 443))
print("套接字连接成功")
n=0
sendtime=0
recvtime=0
while n<6:
n=n+1
t1=time.clock()
ssl_s.send(b'a'*100)
t2=time.clock()
sendtime+=t2-t1
print("发送时长",t2-t1)
t1=time.clock()
data=ssl_s.recv(1024)
t2=time.clock()
recvtime+=t2-t1
print("接收时长",t2-t1)
print(len(data))
print("平均接收时间",sendtime/n,"平均发送时间",recvtime/n)
print("生成的证书信息")
pprint.pprint(ssl_s.getpeercert())
ssl_s.close()
```
服务器端代码
```python
import socket
import ssl,time
sock=socket.socket()
print("建立套接字成功")
sock.bind(("127.0.0.1", 443))
print("绑定成功")
sock.listen(1)
def input_pro(connstream,data):
print("接收到的客户端数据长度是",len(data))
return True
def doclient(connstream):
recvtime=0
sendtime=0
n=0
t1=time.clock()
data=connstream.recv(1024)
t2=time.clock()
print("服务端接收客户端数据的时间",t2-t1)
while data:
if not input_pro(connstream,data):
break
n=n+1
t3 = time.clock()
connstream.send(b'b' * 1000)
t4 = time.clock()
sendtime += t4 - t3
print("服务端发送数据时长", t4 - t3)
t3 = time.clock()
data = connstream.recv(1024)
t4 = time.clock()
recvtime += t4 - t3
print("服务端接收客户端数据时间", t4 - t3)
print("平均发送时间是",sendtime/n,"平均接收时间是",recvtime/n,)
return True
while True:
#接受连接并返回(conn,address),
# 其中conn是新的套接字对象,
# 可以用来接收和发送数据。
# address是连接客户端的地址。
conn,addr=sock.accept()
print("客户端的套接字数据接收到了")
connstream=ssl.wrap_socket(conn,"key.pem","cert.pem",server_side=True)
try:
doclient(connstream)
finally:
connstream.shutdown(socket.SHUT_RDWR)
connstream.close()
```
## **四、实验结果截图**
**客户端运行结果:**
**发送6次100字节的数据**
**接收服务器1000字节的数据,并显示服务器发来的数据的长度(1000)**
![Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.021.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711509190320-ac727a4d-fadb-464c-9d63-32785aedba06.png#averageHue=%232e2d2c&clientId=u668d35f8-d388-4&from=paste&height=281&id=u7756d54a&originHeight=351&originWidth=1028&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=36895&status=done&style=none&taskId=u50ad466b-65a5-43d9-b306-788436cb4bc&title=&width=822.4)
证书信息:
![Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.022.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711509204320-3975fec2-4f1b-43fd-bae9-e16e61e2d98c.png#averageHue=
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010445 实验内容 1.安装openSSL 2.编写一个服务器的程序,服务器端的功能是建立SSL网络服务,接受客户端的SSL连接,收发SSL消息。 3.编写一个客户端的程序,客户端的功能是通过SSL协议连接服务器,收发SSL消息。 4.生成SSL证书。 5.撰写试验报告,包括了服务器端和客户端运行结果截图,以及生成的SSL证书。
资源推荐
资源详情
资源评论
收起资源包目录
100010445-Python+OpenSSL实验.zip (37个子文件)
openssltest2
LICENSE 1KB
img
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.006.png 236KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.002.png 95KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.005.png 273KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.025.png 51KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.021.png 36KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.011.png 36KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.014.png 41KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.007.png 53KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.001.png 88KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.008.png 15KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.003.png 20KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.022.png 30KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.023.png 31KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.012.png 16KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.010.png 17KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.018.png 42KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.016.png 102KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.020.png 172KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.009.png 55KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.015.png 48KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.017.png 32KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.013.png 27KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.004.png 149KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.019.png 44KB
Aspose.Words.402c4826-fb4e-4eb8-9596-af34ad964f93.024.png 49KB
README.md 10KB
python+SSL项目
mycert.pem 1KB
workspace.xml 22KB
misc.xml 212B
key.pem 2KB
server.py 1KB
modules.xml 276B
openssl_proj.iml 398B
cert.pem 1KB
client.py 675B
mykey.pem 2KB
共 37 条
- 1
资源评论
- 盧.2023-02-21怎么能有这么好的资源!只能用感激涕零来形容TAT...
神仙别闹
- 粉丝: 2707
- 资源: 7662
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功