如何为 Go 服务器应用程序设置 Let's Encrypt

2024-03-28

我有自己的域,其中包含用 Go 编写的 Web 服务。我使用内置的 Go Web 服务器,前面没有 Nginx 或 Apache。

我想开始通过 HTTPS 提供服务,并且我意识到 Let's Encrypt 即将成为实现这一目标的方法。

谁能分享配置在 Linux 服务器上运行的 Go 应用程序的整个设置过程?


这是我发现的使用 Go 和 Let's Encrypt 证书的 HTTPS 服务器的最小自动设置:

package main

import (
    "crypto/tls"
    "log"
    "net/http"

    "golang.org/x/crypto/acme/autocert"
)

func main() {
    certManager := autocert.Manager{
        Prompt:     autocert.AcceptTOS,
        HostPolicy: autocert.HostWhitelist("example.com"), //Your domain here
        Cache:      autocert.DirCache("certs"),            //Folder for storing certificates
    }

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello world"))
    })

    server := &http.Server{
        Addr: ":https",
        TLSConfig: &tls.Config{
            GetCertificate: certManager.GetCertificate,
            MinVersion: tls.VersionTLS12, // improves cert reputation score at https://www.ssllabs.com/ssltest/
        },
    }

    go http.ListenAndServe(":http", certManager.HTTPHandler(nil))

    log.Fatal(server.ListenAndServeTLS("", "")) //Key and cert are coming from Let's Encrypt
}

有关 autocert 包的更多信息:link https://godoc.org/golang.org/x/crypto/acme/autocert

编辑:需要使 http 可用,因为LetsEncrypt安全问题 https://community.letsencrypt.org/t/important-what-you-need-to-know-about-tls-sni-validation-issues/50811, 阅读更多here https://github.com/golang/go/issues/21890。作为此修复的额外好处,我们现在有了 http-->https 重定向。如果您已经收到了证书,旧示例将继续工作,但对于新站点来说它将中断。

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

如何为 Go 服务器应用程序设置 Let's Encrypt 的相关文章

  • 在intellij中为java启用ssl调试

    从我的问题开始 上一期尝试通过 tls ssl 发送 java 邮件 https stackoverflow com questions 39259578 javamail gmail issue ready to start tls th
  • 在SSL模式下使用apache kafka

    我正在尝试在 SSL 1 way 模式下设置 kafka 我已经阅读了官方文档并成功生成了证书 我将记下两种不同情况的行为 此设置只有一名经纪人和一名动物园管理员 案例 1 经纪人间通信 明文 我的相关条目server properties
  • 德尔福:idHttp+SSL

    请解释一下如何使用 SSL https 从服务器下载文件 我在互联网上没有找到合适的答案 每个人都说 TIdSSLIOHandlerSocket 但我只有 TIdSSLIOHandlerSocketOpenSSL 如果我使用 TIdSSLI
  • Docker容器总是显示ssl连接错误

    我正在开始使用 docker compose 并一直在研究简单的演示 Flask 应用程序 问题是 我在一个组织内部运行这个程序 该组织以左右抛出 SSL 错误的方式拦截所有通信 他们为我们提供了需要安装的三个根证书 我通常已经让这些证书在
  • 空或不需要的结构字段

    我有两个结构体 代表将插入到 mongodb 数据库中的模型 一个结构 投资 将另一个结构 集团 作为其字段之一 type Group struct Base Name string json name bson name type Inv
  • IIS 进程无法访问正在使用的文件

    我们为服务器创建了 SSL 证书 当我们想要启动 IIS 时 我们收到此错误 该进程无法访问该文件 因为该文件正在被另一个进程使用 端口 443 似乎正在使用中 我该如何解决这个问题 或者我怎样才能知道为什么端口 443 被使用 Marc
  • 忽略 Xamarin.Forms (PCL) 中的 SSL 证书错误

    有没有办法做类似这里描述的事情 https stackoverflow com a 2675183 https stackoverflow com a 2675183但在 Xamarin Forms PCL 应用程序中 我正在使用 Http
  • GITLAB SSL证书问题:无法获取本地颁发者证书

    我正在尝试在 gitLab 中推送我的第一个项目 但出现此错误 致命 无法访问 https git SSL证书问题 无法获取本地颁发者证书 最后我在这里找到了解决方案https newbedev com invalid ssl certif
  • 在 Go 中将 float 转换为 int 时如何舍入到最近的 int

    将 float 转换为 int 时 小数点将被丢弃 有什么干净的方法可以将其四舍五入到最接近的整数 x int 3 6 应等于 4 而不是 3 int f 0 5 如果 gt 5 将导致向上舍入
  • SSL 和 Tkinter 不存在于 Python 3.5.2、Debian Linux 的源代码构建中

    我刚刚将 Python 3 5 2 下载到我的 Debian 机器上并使用以下命令构建它 configure make make test sudo make install 一切正常 但在make test输出中 它显示安装程序由于未安装
  • htaccess 重定向非 www http 和 https

    我想要 http example com重定向至 http www example com https example com重定向至 https www example com 以及任何东西http whatever example co
  • 如何检查我的 golang 应用程序是否使用 Boringcrypto 而不是本机 golang crypto?

    上下文 我正在阅读多篇有关使我的 golang 应用程序符合 FIPS 要求的文章 换句话说 使我的应用程序使用 Boringcrypto 而不是本机 golang crypto https kupczynski info posts fi
  • 使用 python mechanize 库登录 https 站点

    我有以下代码 import requests import sys import urllib2 import re import mechanize import cookielib import json import imp prin
  • Go中funcappend的实现在哪里?

    我对 go 非常感兴趣 并尝试阅读 go 函数的实现 我发现其中一些函数没有实现 如追加或调用 The append built in function appends elements to the end of a slice If i
  • 通过 API Gateway 使用表单数据将图像发布到 Lambda 函数会导致文件无效

    I ve a 用 Go 编写的 Lambda 函数 https github com mhausenblas imgn blob master functions app uploadimg main go应该允许图像文件上传 通过 HTM
  • 使用openssl从服务器获取证书

    我正在尝试获取远程服务器的证书 然后可以将其添加到我的密钥库中并在我的 Java 应用程序中使用 一位高级开发人员 正在度假 告诉我我可以运行这个 openssl s client connect host host 9999 获取转储的原
  • Node.js 中的 HTTPS 代理服务器

    我正在开发一个node js代理服务器应用程序 我希望它支持HTTP and HTTPS SSL 协议 作为服务器 我目前正在使用node http proxy https github com nodejitsu node http pr
  • golang:使用 gin 路由器服务 net.Conn

    我有一个处理传入 TCP 连接的函数 func Handle conn net Conn error 另外 我有一个初始化的 gin 路由器 带有已实现的句柄 router gin New router GET router POST Th
  • Cgo 生成的源无法在 MVC 上编译

    我有一个用 CGo 制作的共享库 它在 Linux 和 Android 上链接得很好 但是 当使用 Microsoft Visual Studio 2017 在 Windows 10 上进行编译时 出现以下错误 Microsoft R Pr
  • 在node.js中使用socket.io设置服务器-服务器SSL通信

    我正在尝试使用 socket io 通过 ssl 连接来设置服务器到服务器的链接 这是我的例子 Server var app require express var config require config var https requi

随机推荐

  • 为什么我的 WebClient 大多数时候会返回 404 错误,但并非总是如此?

    我想要获取有关我的程序中的 Microsoft 更新的信息 但是 服务器在大约 80 的情况下会返回 404 错误 我将有问题的代码归结为这个控制台应用程序 using System using System Net namespace W
  • 实施 Dijkstra 算法

    我的任务是 大学课程 实施某种形式的寻路 现在 在规范中 我可以实现强力 因为要搜索的节点数量有限制 开始 中间两个 结束 但我想重新使用此代码并来实现迪杰斯特拉算法 http en wikipedia org wiki Dijkstra
  • 如何防止android服务被杀死(带通知的服务)

    我正在开发一个需要不断显示通知的应用程序 我有一项服务可以每秒显示一次通知 当资源不足时 android 就会终止我的服务 我已经从 onStartCommand 给出了返回 START STICKY 因此 一段时间后 服务将重新启动 但与
  • 如何创建自定义元素扩展类的新实例

    我正在尝试以下示例谷歌开发者网站 https developers google com web fundamentals getting started primers customelements extendhtml我收到错误 Typ
  • 如何使用 Grunt 为 LESS 配置 sourceMap?

    我正在使用 grunt 0 4 2 和 grunt contrib less 0 9 0 我希望将我的 LESS 编译成 CSS 并支持源映射 我的 LESS 文件位于public less 主要的称为main less 的编译public
  • 无论如何,Bootstrap 导航栏都不会居中

    我一直在尝试使用 Bootstrap 将我的导航栏集中在导航栏的中心 这非常糟糕 我尝试过使用类似问题中的信息 例如this one https stackoverflow com questions 7165423 twitter boo
  • JS hasAttribute 带有数据属性值

    有没有一种原生方法 没有 jQuery 来检查 dom 元素是否具有具有所选值的属性 例如 assume doc has data mod do defined 这将是真的 document hasAttribute data mod 但这
  • Xamarin 表单 - 以流形式打开文件

    这可能是一个非常简单的问题 但当我们谈论流时我总是感到困惑 我正在尝试在 Xamarin Forms 项目的 Android 部分中打开一个文件 我有一个 Java IO File 我想将其转换为流 以便能够使用这个简单的函数将其发送到 A
  • 当一个值的所有者可以读取它而另一个线程更改它时,Rust 如何防止数据竞争?

    Rust 书中指出了以下内容参考文献和借用 https doc rust lang org book ch04 02 references and borrowing html mutable references 当我们有一个不可变的引用
  • 可观察,出错时重试并仅在完成时缓存

    我们可以使用cache 运算符来避免多次执行长任务 http请求 并重用其结果 Observable apiCall createApiCallObservable cache notice the cache the first time
  • JQuery 检测程序更改事件

    如果我执行 jQuery expr change function 那么当用户更改值时 我可以触发一个事件函数 如果以编程方式更改它 即如果我调用 jQuery expr val moo 是否可以触发它 或者如果一些普通的旧 JavaScr
  • Laravel 5:未找到 DB Seed 类

    我有这个 DatabaseSeeder php
  • Python正则表达式捕获各种url模式组

    我有包含这样的字符串的数据集 我想从中删除所有网址 http google com having trouble finding regex https google com for this case http google com te
  • 选择列表中最早的条目

    如果我有一个包含人员姓名和日期的列表 并且我只想保留每个人最早日期的条目 我该怎么做 我希望最终列表按姓氏字母顺序排列 然后是名字 并且仅包含末尾日期最早的条目 这是列表和我尝试过的示例 但它只是再次给了我相同的列表 L1 Smith Jo
  • Mongoose:Coffeescript 中的递归嵌入文档

    基于这个例子 https github com LearnBoost mongoose blob master examples schema js 有效 var Comment new Schema Comment add title t
  • 禁用 JFrame 中的背景绘制以正确显示 Aero (DWM) 效果

    我在 Java Windows 上使用 Windows Vista 7 的 DWM 功能时遇到问题 我想让我的框架背景使用 Aero 风格 执行此操作的 Windows API 由函数提供DwmExtendFrameIntoClientAr
  • 播放音频 iOS Objective-C

    我正在尝试在我的 iOS 应用程序中播放音频文件 这是我当前的代码 NSString soundFilePath NSString stringWithFormat test m4a NSBundle mainBundle resource
  • 如何在 iOS 7 中让 NSTimer 在后台运行超过 180 秒?

    我已经尝试过 但在 iOS 7 和 Xcode 4 6 2 中工作时间不超过 180 秒 请帮我 UIBackgroundTaskIdentifier bgTask UIBackgroundTaskInvalid UIApplication
  • 存储对相机胶卷图像的引用 - Swift 4

    我有一个非常简单的要求 但显然超出了我的能力范围 我想做的就是允许用户从相机胶卷中选择图像 然后在我的应用程序中存储对该图像的 引用 然后 我可以在需要时从相机胶卷中加载图像 我不想复制图像并将其保存在其他地方 因为我觉得这会浪费手机上的空
  • 如何为 Go 服务器应用程序设置 Let's Encrypt

    我有自己的域 其中包含用 Go 编写的 Web 服务 我使用内置的 Go Web 服务器 前面没有 Nginx 或 Apache 我想开始通过 HTTPS 提供服务 并且我意识到 Let s Encrypt 即将成为实现这一目标的方法 谁能