这个问题是由于服务端证书无法被浏览器所信任导致的TLS握手错误。为了解决这个问题,你可以按照以下步骤进行操作:
生成自签名证书和私钥文件:使用OpenSSL或其他工具生成自签名证书(例如
server.crt
)和私钥文件(例如server.key
)。确保在生成证书时使用正确的主机名和IP地址。openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt
将生成的
server.crt
和server.key
文件放置在与你的Go代码相同的目录下。修改代码中启动服务器的部分,确保正确加载证书和密钥文件:
go func() { if err := server.ListenAndServeTLS("server.crt", "server.key"); err != nil && err != http.ErrServerClosed { log.Fatal(err) } }()
在浏览器中添加信任自签名证书:将生成的自签名证书(例如
server.crt
)导入到你的浏览器中,以便让浏览器信任该证书。具体步骤因浏览器而异,请查阅相关文档或指南。
完成上述步骤后,再次运行服务器并访问 https://localhost:8080/upload?file=/Users/tangxuxin/GolandProjects/exetice_project/client/file
,应该能够成功建立TLS连接,并上传文件到服务器。
请注意,自签名证书在生产环境中不被广泛接受,因为它们没有由权威的证书颁发机构(CA)所签名。在实际部署时,你可能需要考虑获取真实的SSL证书来确保安全和信任性。
内容由零声教学AI助手提供,问题来源于学员提问