设置 Let's encrypt with Go - 握手错误

2024-04-22

我正在尝试设置让我们在用 Go 编写的负载均衡器上进行加密,我尝试了自动和手动设置,但总是出错。

该域正确指向我们的服务器(Digital Ocean),我什至可以从浏览器打开该网站而不会出现错误,而且 ssl 检查报告该域上没有错误。事实是,当我从 CLI 在服务器上运行 Go 可执行文件时,我反复收到错误。

  1. 自动(acme/autocert)设置:

服务器代码是,当我在服务器启动后第一次从浏览器查看域时,会创建证书和密钥:

    go func() {
        log.Printf("Staring HTTP service on %s ...", ":80")

        http.HandleFunc("/*", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
            http.Redirect(w, r, "https://" + app.Cfg.S_HOST + ":443" + r.RequestURI, http.StatusMovedPermanently)
        }))

        if err := http.ListenAndServe(":80", nil); err != nil {
            errs <- err
        }

    }()



    log.Printf("Staring HTTPS service on %s ...", ":443")

    http.HandleFunc("/hello", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "text/plain")
        w.Write([]byte("This is an example server.\n"))
    }))


    certManager := autocert.Manager{
        Prompt:     autocert.AcceptTOS,
        HostPolicy: autocert.HostWhitelist(app.Cfg.S_HOST), //your domain here
        Cache:      autocert.DirCache("certs"), //folder for storing certificates
    }

    server := &http.Server{
        Addr: ":443",
        TLSConfig: &tls.Config{
            ServerName: app.Cfg.S_HOST,
            GetCertificate: certManager.GetCertificate,
        },
    }

    if err := server.ListenAndServeTLS("", ""); err != nil {
        print(err.Error())
    } //key and cert are comming from Let's Encrypt

我收到这些错误:

  1. http:来自(ip)的TLS握手错误:59451:读取tcp(myserver IP):443->(ip):59451:读取:连接由对等方重置

  2. hello.ServerName 空:2017/04/01 17:14:38 http:来自 (ip) 的 TLS 握手错误:58193:acme/autocert:缺少服务器名称

  3. http:来自 (ip) 的 TLS 握手错误:45822:acme/autocert:主机未配置

  4. http:来自 (ip) 的 TLS 握手错误:58440:EOF

然后我还尝试手动创建证书(成功)并简化使用该代码,但我一次又一次地收到错误:

服务器代码是:

    go func() {
        log.Printf("Staring HTTP service on %s ...", ":80")

        http.HandleFunc("/*", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
            http.Redirect(w, r, "https://" + app.Cfg.S_HOST + ":443" + r.RequestURI, http.StatusMovedPermanently)
        }))

        if err := http.ListenAndServe(":80", nil); err != nil {
            errs <- err
        }

    }()



    log.Printf("Staring HTTPS service on %s ...", ":443")

    http.HandleFunc("/hello", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "text/plain")
        w.Write([]byte("This is an example server.\n"))
    }))


    // ssl["cert"] and ssl["key"] are the cert and key path (letsencrypt/live...)
    if err := http.ListenAndServeTLS(sslAddr, ssl["cert"], ssl["key"], nil); err != nil {
        errs <- err
    }

Errors:

  1. http2:服务器:从客户端读取前言时出错(ip):10319:伪造 问候语“POST / HTTP/1.1\r\n主机:4”

  2. http:来自 (ip) 的 TLS 握手错误:10322:EOF

  3. http:来自(ip)的TLS握手错误:13504:读取tcp(我的服务器ip):443->(ip):13504:读取:连接由对等方重置

  4. http2:服务器:从客户端读取前言时出错(ip):9672:等待客户端前言超时

有人能帮助我吗?谢谢


正如 JimB 和其他人在评论中所说,这可能是错误请求的结果。使用时将记录无效请求https://www.ssllabs.com/ssltest/ https://www.ssllabs.com/ssltest/测试站点的 https 配置。良好的测试分数可以让您确信日志消息是良性的并且可以安全地忽略。

还有acme/自动认证 https://godoc.org/golang.org/x/crypto/acme/autocert软件包正在快速发展(截至 2018 年 1 月),请检查您的版本是否是最新的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置 Let's encrypt with Go - 握手错误 的相关文章

  • Go 中的切片分块

    我有一个切片 其中包含约 210 万条日志字符串 我想创建一个切片切片 其中字符串尽可能均匀分布 这是我到目前为止所拥有的 logs is a slice with 2 1 million strings in it var divided
  • Golang 网络爬虫 NTLM 身份验证

    Golang 网络抓取工具需要从经过 NTLM 验证的网页中提取信息 有了有效的用户名和密码 网络抓取工具如何与服务器进行 NTLM 4 次握手 以获得对后面受保护网页的访问权限 url username password http www
  • 如何顺序运行 golang 测试?

    当我跑步时go test 我的输出 FAIL TestGETSearchSuccess 0 00s Location drivers api test go 283 Error Not equal 200 expected 204 actu
  • ReverseProxy取决于golang中的request.Body

    我想构建一个 http 反向代理 它检查 HTTP 主体 然后将 HTTP 请求发送到它的上游服务器 你怎么能在 Go 中做到这一点 初始尝试 如下 失败 因为 ReverseProxy 复制传入请求 修改它并发送 但正文已被读取 func
  • 以编程方式将 PEM 证书导入 Java KeyStore

    我有一个由两个文件 crt 和 key 组成的客户端证书 我希望将其导入到 java KeyStore 中 然后在 SSLContext 中使用 以通过 Apache 的 HTTPClient 发送 HTTP 请求 但是 我似乎找不到一种以
  • 如何使用 Java 原生接口从 Java 调用 Go 函数?

    可以通过以下方式调用 C 方法JNA https en wikipedia org wiki Java Native AccessJava 中的接口 如何使用 Go 实现相同的功能 package main import fmt impor
  • 如何在 Visual Studio Code 中使用 Delve 调试器进行远程调试

    我已经问过了 得到了很好的答复answer https stackoverflow com questions 39058823 how to use delve debugger in visual studio code用于使用 del
  • exec git 命令拒绝重定向到 Go 中的文件

    我试图从 go 调用 git log 并将输出重定向到给定文件 cmdArgs string log numstat reverse fmt Sprintf s HEAD 89c98f5ec48c8ac383ea9e27d792c3dc77
  • 用于保护网站安全(使用 SSL)时,数字证书如何工作?

    请帮助我了解整个过程是如何进行的 据我了解 Web 浏览器包含 verisign Entrust Comodo 等证书颁发机构 CA 的根证书 但是当用户访问安全页面时到底会发生什么 Web 浏览器是否向 CA 服务器发送请求来验证证书 还
  • 构建链代码时 ltdl.h 未找到错误

    我正在尝试使用构建链码go build 当我运行 Go build 命令时它的报告 hyperledger fabric vendor github com miekg pkcs11 pkcs11 g o 29 18 fatal error
  • 在 Go 中跟踪 HTTP 请求时指定超时

    我知道通过执行以下操作来指定 HTTP 请求超时的常用方法 httpClient http Client Timeout time Duration 5 time Second 但是 我似乎不知道在跟踪 HTTP 请求时如何执行相同的操作
  • Android SSL 无对等证书

    我有一个例外 没有同行证书 当我询问谷歌时 我得到了解决方案 我信任所有证书 但这个问题的答案是 它是不安全的 所以我给班级打电话 HostnameVerifier hostnameVerifier org apache http conn
  • 如何使用Python中字符串变量中存储的证书打开ssl套接字

    在Python中 ssl wrap socket可以从文件中读取证书 ssl wrap socket需要证书作为文件路径 如何使用从字符串变量读取的证书启动 SSL 连接 我的主机环境不允许写入文件 并且临时文件模块不起作用我正在使用Pyt
  • 为什么结构中“[0]byte”的位置很重要?

    0 byte在golang中不应该占用任何内存空间 但这两个结构体的大小不同 type bar2 struct A int 0 byte type bar3 struct 0 byte A int 那么为什么这个位置 0 byte这里重要吗
  • 使用普通用户和 https 的 gitea

    我正在尝试设置 gitea 以使用 https 和我从 LetsEncrypt 获得的证书 运行该服务作为普通用户 我已经让它与普通用户在端口 80 上使用 http 一起工作git并使用 iptables 将端口 80 重定向到端口 30
  • GAE Go — 如何对不存在的实体键使用 GetMulti?

    我发现自己需要做一个GetMulti使用键数组进行操作 其中某些实体存在 但有些实体不存在 我当前的代码 如下 返回错误 datastore no such entity err datastore GetMulti c keys info
  • mysql jdbc 与 SSL 连接在 tls 握手级别失败

    我们的 mysql 服务器配置为仅接受与 ssl 密码 DHE RSA AES256 GCM SHA384 的连接 我正在使用 java mysql connector java 8 0 15 和 java 8 openjdk 版本 1 8
  • 我怎么知道我的所有 goroutine 确实正在使用 golang 的同步包等待一个条件

    我有一个应用程序 我正在创建多个 goroutine 来同时执行某个任务 所有工作协程都会等待条件 事件发生 一旦事件被触发 它们就会开始执行 创建完所有goroutines后 主线程在发送广播信号之前应该知道所有goroutines确实处
  • AWS EC2 应用程序负载均衡器 + 双向 SSL?

    是否可以使用 AWS Application Load Balancer 并使用双向 ssl 客户端证书 我当前的设置使用经典的 ELB 通过 tcp 转发到 Web 服务器端点来支持此操作 我现在需要使用 URL 路由流量 并希望在可能的
  • 鸭子在 Go 中打字

    我想写一个Join函数接受任意对象String 方法 package main import fmt strings type myint int func i myint String string return fmt Sprintf

随机推荐

  • 在运行时访问注释

    我怎样才能访问main无论check in the Sample类是真还是假 我应该在主类中写什么 package annotation import java lang annotation Retention import java l
  • 具有多个控件的列表框

    有人可以帮我创建一个带有复选框和星级控件水平对齐的列表框吗 我想要使 用 C 和 XAML 的 WP7 您需要编写一个自定义列表 这里是一个示例 您需要包含控制工具包 xmlns ControlsToolkit clr namespace
  • 使用亚音速交易

    在我的网络应用程序中 我必须对用户操作进行审核 因此 每当用户执行操作时 我都会更新执行操作的对象并保留该操作的审核跟踪 现在 如果我先修改对象 然后更新审计跟踪 但审计跟踪失败了 那么怎么办 显然我需要回滚对已修改对象的更改 我可以在简单
  • 如何在 Qt 5.3 中将 QByteArray 转换为字符串?

    我正在使用一些函数来转换QVector s to QByteArray s 例如 QByteArray Serialize serialize QVector
  • 错误:MyDocument.getInitialProps()”应该解析为带有“html”属性的对象,该属性设置有有效的 html 字符串(在 document.js 中)

    现在我正在用react nodejs nextserver express制作一个迷你项目 发生意外错误 我不知道为什么 document js中会出现错误 如果您知道原因 请告诉我 谢谢 error Error MyDocument ge
  • MVVM 的 ReSharper 警告

    当我使用 WPF 实现 MVVM 模式时 我发现 ReSharper 经常警告我某些属性从未在我的 ViewModel 中使用 问题是它们正在被使用 但仅由数据绑定系统使用 有其他人遇到过这种烦恼吗 有没有办法帮助 ReSharper 意识
  • 当我从服务中调用函数时,“this”未定义

    我的电话上有这个电话component page this timerSessionService startTimer this finish bind this this onSynchronice 嗯 它与this finish 但是
  • 如何禁用Chrome中弹出窗口的位置栏和滚动条?

    对于以下代码 宽度和高度在 Chrome 中有效 但位置和滚动条不起作用 请指导 a href Click Here a 出于安全原因 Chrome 不允许您这样做 隐藏地址栏可以更轻松地假装您是某银行网站 http en wikipedi
  • 日期格式转换 %B %Y

    我们能否以某种方式转换日期 例如 November 2017 December 2017 迄今为止 我尝试导入 csv 数据 但收到了因子列 我尝试了以下代码 但没有成功 as POSIXct as character dat Date f
  • C++ 声明中的显式限定

    当第一个声明被注释掉时 以下命名空间定义无法编译 如果第一个声明foo未注释 那么它编译得很好 namespace Y void foo void Y foo 标准中的相关部分 8 3 1 说 当 declarator id 合格时 声明应
  • Azure Devops Artifacts:禁用从上游源保存包

    我有一个 npm 包的提要 其中 npmjs 设置为上游源 默认情况下 当您尝试使用其他依赖项安装上传的自定义包时 这些依赖项包会自动保存在您的源中 以节省将来安装的时间 然而 我不想要它 并希望我的提要仅托管我自己的软件包 并且每次安装时
  • Android 11 上不再支持发送短信的意图

    当以 Android 11 为目标并使用 Android 11 设备 物理设备或模拟器 时 以下方法不再适用于发送短信 更改目标 SDK 版本或设备 SDK 版本即可使其正常工作 logcat 根本没有说什么 知道为什么它不起作用吗 pri
  • Shopify 应用桥会话令牌在使用 vue.js 和 Axios 时遇到一些问题?

    我在制作 Shopify 应用程序 Vue js 作为前端和 laravel 作为后端时遇到一些问题 我正在使用 app bridge 生成会话令牌 它生成会话令牌正常 并且工作正常 直到重新生成会话令牌 重新生成会话令牌后 它会响应 会话
  • 来自 gluUnProject 的 IllegalArgumentException

    我收到此错误消息 08 30 19 20 17 774 ERROR AndroidRuntime 4681 FATAL EXCEPTION GLThread 9 08 30 19 20 17 774 ERROR AndroidRuntime
  • Swift:以编程方式导航到 ViewController 并传递数据

    我最近开始学习swift 到目前为止还不错 目前 我在尝试在视图控制器之间传递数据时遇到问题 我设法弄清楚如何使用导航控制器以编程方式在两个视图控制器之间导航 唯一的问题是现在我很难弄清楚如何将用户输入的三个字符串 对于 json api
  • 我怎样才能让两个“发展流”(分支?)相互跟踪,同时在特定方面保持不同?

    BRIEF 我想让两个 或更多 开发流 环境相互跟踪 在两个方向上发送彼此之间的更改 而不完全收敛 同时保留某些关键的 本质的差异 细节 一个具体的例子 下面是一个具体的例子 我对我的主目录 glew home 进行版本控制已有 28 年了
  • Angularjs:监听指令中的模型更改

    我试图找出当模型在指令中更新时如何监听 eventEditor directive myAmount function return restrict A link function scope elem attrs scope watch
  • opencv中以下代码行的含义是什么?

    该代码行的含义是什么以及如何将此代码转换为 javacv gray Scalar all 255 这是与此代码行相关的完整代码 Mat src imread in jpg gray cvtColor src gray CV BGR2GRAY
  • 从 iFrame 中卸载/删除内容

    是否有办法卸载已在 iframe 内加载的页面 如果可能的话 我不想将 iframe src 更改为空白页面 我基本上正在寻找可以做这样的事情的东西 frameID attr src 只是该代码似乎没有清除先前加载的页面 有没有 unloa
  • 设置 Let's encrypt with Go - 握手错误

    我正在尝试设置让我们在用 Go 编写的负载均衡器上进行加密 我尝试了自动和手动设置 但总是出错 该域正确指向我们的服务器 Digital Ocean 我什至可以从浏览器打开该网站而不会出现错误 而且 ssl 检查报告该域上没有错误 事实是