实施SSL的正确方法是什么?

问题描述 投票:1回答:1

我有一个烧瓶应用程序(客户端),我需要将一些数据发送到服务器(现在是另一个烧瓶应用程序)并获取一些相应的数据。我需要使用REST,因为服务器可以是以后的任何东西(当前烧瓶应用程序是用于测试的虚拟服务器)。我需要在客户端和服务器之间建立SSL连接。我看到SSL有几个步骤:

  1. 客户端请求加密连接。
  2. 服务器使用具有公钥的SSL证书进行响应。
  3. 客户端验证SSL证书
  4. 客户端创建私钥
  5. 客户端使用公钥加密私钥并将其发送到服务器。
  6. 服务器解密它并获取私钥。
  7. 因此,在客户端和服务器之间建立加密连接。通过使用私钥加密数据,在客户端和服务器之间进一步交换数据。

这就是我想要实现的目标。如果我的SSL概念错误,请纠正我。

我已经看到下面的实现,并为我完美工作。

客户端使用requests.get()verify=<path to server SSL certificate>。我使用openssl为服务器生成了SSL证书,如下所示。

openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365

但我不认为这里涉及上述所有7个步骤。实施SSL的实际方式是什么?任何帮助,将不胜感激。

ssl https openssl python-requests flask-restful
1个回答
0
投票
  1. 客户端请求加密连接。

正确。

  1. 服务器使用具有公钥的SSL证书进行响应。

正确。

  1. 客户端验证SSL证书

正确。

  1. 客户端创建私钥

不正确。现在已经太晚了。

  1. 客户端使用公钥加密私钥并将其发送到服务器。

不正确。没有这样的步骤。请参阅RFC 2246和后继者。

  1. 服务器解密它并获取私钥。

不正确,同上。

  1. 因此,在客户端和服务器之间建立加密连接。

不正确,同上。

通过使用私钥加密数据,在客户端和服务器之间进一步交换数据。

不正确,同上。 TLS的工作原理是:(1)通过服务器证书和PKI建立信任; (2)通过客户证书可选择建立信任; (3)通过密钥协商过程建立对称会话密钥,其中永远不传输实际会话密钥。

这就是我想要实现的目标。

不,不是。您正在尝试建立TLS连接。它的作用实际上很少引起你的关注。

如果我的SSL概念错误,请纠正我。

你完全错了。

我使用openssl为服务器生成了SSL证书,如下所示。

不,你没有。您已创建证书签名请求(CSR)。在您获得证书颁发机构(CA)签名之前,这是无用的。它不是SSL证书。

在上面的实现方法中,客户端为每次休息调用验证服务器的证书,但我不想这样做。我想在客户端和服务器之间创建加密连接,然后应加密进一步的数据交换。所以,我认为缺少客户端和服务器之间的初始连接。此外,缺少客户端的私钥生成。我想实现SSL,我认为TLS与SSL不同。如果我错了,请纠正我。

你错了。 TLS支持会话恢复,允许缩短握手,这消除了证书交换步骤。缺少“从客户端生成私钥”步骤,因为它不一定存在。你在猜。

© www.soinside.com 2019 - 2024. All rights reserved.