【问题标题】:Do I need to use nginx or Apache to use Lets Encrypt?我是否需要使用 nginx 或 Apache 才能使用 Lets Encrypt?
【发布时间】:2016-08-20 18:37:38
【问题描述】:

我有一个非常简单的基于 golang 的 API,它只监听路径并通过数据库插入相应地响应。

我想使用 Lets Encrypt 通过 TLS/https 提供它,但所有教程似乎都表明需要使用 Apache 或 nginx。

我喜欢让我的服务器保持轻量级,并且没有看到任何需要引入这些 Web 服务器的开销(它绝对不是一个成熟的网站),并且通过 http 我的 go 实现运行良好。

没有Apache或者nginx也可以安装吗?

【问题讨论】:

  • 我建议使用nginx或者apache,把tls/https/cert的工作留给部署团队,让开发者专注于业务。

标签: apache encryption nginx go lets-encrypt


【解决方案1】:

不,你不需要使用 Apache/Nginx,Go 可以很好地处理 TLS。

查看http.ListenAndServeTLS

例子:

➜ sudo letsencrypt certonly --standalone --agree-tos --email you@email.com -d domain1.com [-d domain2.com, etc..]
➜ sudo cat /etc/letsencrypt/archive/domain1.com/fullchain1.pem > cert.pem
➜ sudo cat /etc/letsencrypt/archive/domain1.com/privkey1.pem > key.pem 

➜ cat main.go
import (
    "log"
    "net/http"
)

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

func main() {
    http.HandleFunc("/", handler)
    log.Printf("About to listen on 10443. Go to https://domain1.com:10443/")
    log.Fatal(http.ListenAndServeTLS(":10443", "cert.pem", "key.pem", nil))
}

请注意,如果您希望 go 服务器侦听端口 443(默认 https 端口),则必须以 root 身份运行它或使用 systemd 将端口传递给它。

443端口运行示例:

  1. 将代码改为log.Fatal(http.ListenAndServeTLS(":443", "cert.pem", "key.pem", nil))

  2. go build

  3. sudo ./your-package-name
  4. 或者如果您不想以 root 身份运行,则必须以用户身份 chown cert.pem/key.pem 然后运行 ​​setcap cap_net_bind_service=+ep your-package-name 然后您将能够以用户身份监听端口 443/80 .

更多关于使用 setcap 的细节:https://wiki.apache.org/httpd/NonRootPortBinding

【讨论】:

  • 太棒了!你知道一个教程会告诉我如何在没有 appache/nginx 的情况下设置 Let's Encrypt 吗?他们的 github 和大多数网站似乎只在这两者的背景下解释
  • 如何监听端口 80 或 443 以便在 / 处可用?
  • go build && sudo ./your-service,我会加到帖子里的。
  • 那它不会一直以 root 身份运行吗?这很糟糕吗?
  • 不是“坏”,取决于您的设置,您可以随时复制证书并将其发送给您的用户,然后 setcap,我将添加一个示例。
猜你喜欢
  • 1970-01-01
  • 2017-05-16
  • 2020-01-31
  • 1970-01-01
  • 2017-04-28
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多