gpt4 book ai didi

sockets - SSL:使用 Google Cloud 的 SSL 负载平衡代理的 UNKNOWN_PROTOCOL

转载 作者:行者123 更新时间:2023-12-05 06:57:08 33 4
gpt4 key购买 nike

我在 GCP SSL 代理负载平衡器 ( https://cloud.google.com/load-balancing/docs/ssl/ ) 后面有一个简单的 python SSL 服务器,根据文档 ( https://cloud.google.com/load-balancing/docs/ssl/setting-up-ssl/ ) 设置,除了服务器在一个实例组中的单个节点上运行. GCP SSL 代理可以连接到服务器,因为我看到服务器打印了很多空的健康检查请求。节点名称 mypocketxp.com 的 DNS 指向我附加到代理转发规则的静态 IP。当我与下面的客户端或“openssl s_client -connect mypocketxp.com:443”连接时,服务器崩溃了

Traceback (most recent call last):
File "./server3.py", line 13, in <module>
sslsoc = context.wrap_socket(newsocket, server_side=True)
File "/usr/lib64/python3.6/ssl.py", line 365, in wrap_socket
_context=self, _session=session)
File "/usr/lib64/python3.6/ssl.py", line 776, in __init__
self.do_handshake()
File "/usr/lib64/python3.6/ssl.py", line 1036, in do_handshake
self._sslobj.do_handshake()
File "/usr/lib64/python3.6/ssl.py", line 648, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:877)

当我从等式中删除代理,并将 DNS 条目更改为直接指向运行服务器的节点并将自签名证书和 key 替换为受信任的 CA 为 mypocketxp.com 颁发的证书和 key 时,我可以毫无问题地连接。

看来是 SSL 代理到服务器的连接导致了问题,但我不知道为什么。

感谢任何帮助。感谢您对此进行调查

服务器

#!/usr/bin/python3
import socket, ssl

context = ssl.SSLContext(ssl.PROTOCOL_TLS)
context.load_cert_chain(certfile="/home/adittmer/selfsigned.pem", keyfile="/home/adittmer/selfsigned.key")

bindsocket = socket.socket()
bindsocket.bind(('', 443))
bindsocket.listen(5)

while True:
newsocket, fromaddr = bindsocket.accept()
sslsoc = context.wrap_socket(newsocket, server_side=True)
request = sslsoc.read()
print(request)

客户端

#!/usr/bin/python3

import socket
import ssl

server_name = 'mypocketxp.com'
server_port = 443

context = ssl.create_default_context()
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.load_verify_locations("/etc/ssl/certs/DST_Root_CA_X3.pem")
conn = context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=server_name)
conn.connect((server_name, server_port))

conn.send(b"Hello, world!")
conn.close()

最佳答案

当我刚刚设置负载平衡器并立即从中请求 HTTPS 页面时,我收到了这条消息。 LB 似乎需要一段时间才能启动。 5 分钟后重试,问题就迎刃而解了。

关于sockets - SSL:使用 Google Cloud 的 SSL 负载平衡代理的 UNKNOWN_PROTOCOL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64963475/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com