Gin域名服务器配置SSL证书后,浏览器可以正常访问域名,APIpost客户端这种不行

1. 运行环境

go 1.22.2
gin v1.9.1

2. 问题描述?

func (r *Route) ApiInit() {
gRoute := gin.Default()
gRoute.GET("/https_test", func(c *gin.Context) {
    fmt.Println(c.Request.Host)
    c.JSON(http.StatusOK, gin.H{
       "code":   http.StatusOK,
  "result": "测试成功",
  })
})

//启动服务
server := &http.Server{
    Addr:    ":80",
  Handler: gRoute,
}
// 定义服务器并配置SSL证书
httpsServer := &http.Server{
    Addr:    ":443", // HTTPS443端口
  Handler: gRoute,
  TLSConfig: &tls.Config{
       MinVersion:       tls.VersionTLS12, // 设置TLS的最小版本
  CurvePreferences: []tls.CurveID{tls.X25519, tls.CurveP256}, // 优先使用X25519
  CipherSuites: []uint16{
          tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
  tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
  tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,
  },
  Certificates: []tls.Certificate{
          // SSL证书和私钥
  mustLoadCertificate(), // 这是一个辅助函数,用于加载证书,见下文
  },
  },
}
g := errgroup.Group{}
g.Go(func() error {
    return server.ListenAndServe()
})
g.Go(func() error {
    return httpsServer.ListenAndServeTLS("", "")
})
if err := g.Wait(); err != nil && !errors.Is(err, http.ErrServerClosed) {
    log.Fatal(err)
}
}
func mustLoadCertificate() tls.Certificate {
    certFile := "./ssl/cert.pem" // 证书文件路径
  keyFile := "./ssl/cert.key" // 私钥文件路径
  // 加载证书和私钥
  cert, err := tls.LoadX509KeyPair(certFile, keyFile)
    if err != nil {
       log.Fatalf("Failed to load certificate and key: %v", err)
    }
    return cert
}

这样配置完域名和SSL证书,Microsoft Edge和Goolge浏览器,Apipost,Apifox网页版都能正常访问。
但Apipost,Apifox客户端就无法请求并报错read ECONNRESET,
服务器日志 http: TLS handshake error :write: connection reset by peer
网页版Apipost不上传CA也能访问,客户端上传后并没有什么变化。不知道是否是APIfox,APIpost这种客户端所支持的的tls的密码套件和曲线和我配置的有不同导致的吗?

3. 您期望得到的结果?

在客户端也能正常访问

4. 您实际得到的结果?

Apipost,Apifox客户端就无法请求并报错read ECONNRESET,
服务器日志 http: TLS handshake error :write: connection reset by peer

gin
最佳答案

已解决 问题造成的根本原因是阿里国内服务器+域名没有公安备案,阿里会拦截访问服务 解决方法:域名备案

6个月前 评论
讨论数量: 4

浏览器访问加了ssl的网站,是可以由浏览器获取本地证书后进行数据交互的,APIpost这类也是需要走https的请求的,如果没有设置本地证书的地方,那大概率不能请求https的网站

6个月前 评论
Mecha (楼主) 6个月前

已解决 问题造成的根本原因是阿里国内服务器+域名没有公安备案,阿里会拦截访问服务 解决方法:域名备案

6个月前 评论

https通过nginx配就行了

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!