当前位置: 首页 > 面试题库 >

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

那昊
2023-03-14
问题内容

我有自己的域名,使用Go编写了Web服务。我正在使用内置的Go Web服务器,前面没有Nginx或Apache。

我想开始通过HTTPS服务,我意识到让我们加密即将成为实现此目的的途径。

任何人都可以共享配置在Linux服务器上运行的Go应用程序的整个设置过程吗?


问题答案:

这是使用我发现的Go and 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,
        },
    }

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

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

有关autocert软件包的更多信息:链接

编辑:由于letencrypt安全性问题,需要使http可用,在此处了解更多信息。作为此修复程序的奖励,我们现在具有http->
https重定向。如果您已收到旧示例的证书,则旧示例将继续工作,但是对于新站点,它将中断。



 类似资料:
  • 我的类路径中有多个应用服务器,即通过spring-boot-starter-webflux的Netty和通过另一个依赖链的Tomcat。我如何确定在Spring Boot使用哪个应用服务器? 目前,Tomcat正在取代Netty启动。 重要提示:我不能排除任何一个,Tomcat是CXF用的,Netty是WebClient用的。

  • 我有一个yii2基本模板在本地工作正常,但当我在服务器上上传文件时,它不工作。 index.php 当我打开URL它给了我以下错误 我发现这是由于在删除加载的文件时使用了导致的。但进一步说,我必须根据它更改供应商目录中的任何地方,我认为这不是一个好的做法。 有人能告诉我解决办法吗? 编辑:此问题是输入: '\' (ASCII=92)state=1中意外字符的重复

  • 我有一个部署在Azure应用服务上的NodeJS应用程序。用38 MB的文件做一个帖子,我得到一个404错误,但是在引擎盖下有一个IIS问题 要设置“maxAllowedContentLength”,我必须编辑“web”。配置文件。 这是不好的,因为如果我在Azure Portal应用程序设置上做一些更改,那么我的本地版本的web应用程序将无法运行。“配置”与自动生成的文件冲突。 是否可以以其他方

  • 更新后,我在Ubuntu服务器上部署codeigniter项目时遇到了一些问题,当我点击链接时,我发现404 Apache错误。 当我把项目放进去的时候http://roy.my-domain.com/ =/var/www/html/folder-一切正常-但当我添加子目录时http://roy.my-domain.com/roy/ =/var/www/html/roy/-我收到404个错误。 当

  • 我已在单独的Weblogic域中成功配置了SAML 2.0身份提供程序 我们在另一个域的Weblogic中部署了一个ADF应用程序,该应用程序具有非SAML基于表单的身份验证(ReadOnlySQLAuthenticator用于验证凭据) 我想将第二个域配置为服务提供者(以使现有应用程序能够使用身份提供者登录)。 我做了以下工作: 配置SAML 2.0 Identity Asserter 在服务器