我在python中有一个TLS工作代码,如下所示:
import datetime
import sys
import ssl
from aiosmtpd.smtp import SMTP
from aiosmtpd.controller import Controller
from aiosmtpd.handlers import Debugging
class Server:
async def handle_DATA(self, server, session, envelope):
#some code here
return "250 OK"
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
context.load_cert_chain(certfile='cert.pem', keyfile='key.pem')
class ControllerStarttls(Controller):
def factory(self):
return SMTP(self.handler, enable_SMTPUTF8=True,require_starttls=True, tls_context=context)
controller = ControllerStarttls(Debugging(), hostname='localhost',port=587)
controller.start()
controller.stop()这段代码在WSL上测试时给出了TLSv1.3,但是在用虚拟机进行测试时,它显示了TLSv1.2。知道为什么TLS的版本会有不同之处吗。
The openssl and python versions on both machines are:
On WSL(NAME="Ubuntu" VERSION="20.04.4 LTS (Focal Fossa)") :
$ python3 --version
Python 3.8.10
$ openssl version
OpenSSL 1.1.1f 31 Mar 2020
On Linux Virtual Machine (NAME="Red Hat Enterprise Linux"
VERSION="8.4 (Ootpa)")
python --version
Python 3.8.6
openssl version
OpenSSL 1.1.1g FIPS 21 Apr 2020用于测试上述代码的openssl命令是:
openssl s_client -starttls smtp -crlf -connect localhost:587有人能提出tls版本差异的原因吗?因为我的要求是在Linux虚拟机(RHEL)上获得TLSv1.3
发布于 2022-07-26 08:18:49
问题如下:
在WSL (TLSv1.3工作)上,您使用的是OpenSSL版本的1.1.1f 31 Mar 2020
在RHEL (TLSv1.2工作)上,您使用的是OpenSSL版本的1.1.1g FIPS 21 Apr 2020
FIPS版本符合FIPS140-2,这意味着它只能使用FIPS认证的算法。TLSv1.3似乎还没有认证,所以必须在该包版本中禁用它。
我建议您卸载OpenSSL FIPS版本,并使用与WSL相同的版本。
https://stackoverflow.com/questions/73118619
复制相似问题