第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為 Go 服務(wù)器應(yīng)用程序設(shè)置 Let's Encrypt

如何為 Go 服務(wù)器應(yīng)用程序設(shè)置 Let's Encrypt

Go
蝴蝶刀刀 2022-01-10 17:21:20
我有自己的域,其中包含用 Go 編寫的 Web 服務(wù)。我使用的是內(nèi)置的 Go Web 服務(wù)器,前面沒有 Nginx 或 Apache。我想開始通過 HTTPS 提供服務(wù),我意識到 Let's Encrypt 即將成為這樣做的方式。任何人都可以分享配置在 Linux 服務(wù)器上運行的 Go 應(yīng)用程序的整個設(shè)置過程嗎?
查看完整描述

3 回答

?
當(dāng)年話下

TA貢獻1890條經(jīng)驗 獲得超9個贊

這是使用我發(fā)現(xiàn)的 Go 和 Let's Encrypt 證書的 HTTPS 服務(wù)器的最小自動設(shè)置:


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

}

關(guān)于 autocert 包的更多信息:鏈接

編輯:由于letsencrypt安全問題需要使http可用,在這里閱讀更多。作為此修復(fù)的獎勵,我們現(xiàn)在有 http-->https 重定向。如果您已經(jīng)收到證書,舊示例將繼續(xù)工作,但它會因新站點而中斷。


查看完整回答
反對 回復(fù) 2022-01-10
?
月關(guān)寶盒

TA貢獻1772條經(jīng)驗 獲得超5個贊

我找到了一個非常簡單的解決方案,使用獨立模式。



安裝 CERTBOT 客戶端(由 Let's Encrypt 推薦)


(go to the directory where you want to install the certbot client)

git clone https://github.com/certbot/certbot

cd certbot

./certbot-auto --help`


簽發(fā)證書(第一次)


注意此操作通過端口 80 發(fā)生,因此如果您的 Go 應(yīng)用程序偵聽端口 80,則需要在運行此命令之前將其關(guān)閉(順便說一下,運行速度非??欤?/p>


./certbot-auto certonly --standalone-supported-challenges http-01 -d www.yourdomain.com



在您的 GO 代碼中添加 SSL 偵聽器


http.ListenAndServeTLS(":443", "/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem", "/etc/letsencrypt/live/www.yourdomain.com/privkey.pem", nil)



完畢!



更新證書(證書在 90 天后過期)


注意您可以手動運行此程序(您將在證書到期前幾天收到一封電子郵件),或者設(shè)置一個 crontab


如果您的 Go 應(yīng)用程序不再監(jiān)聽端口 80,您的 Go 應(yīng)用程序可以在您執(zhí)行以下命令時繼續(xù)運行:

./certbot-auto renew --standalone


如果您的 Go 應(yīng)用程序仍在偵聽端口 80,您可以指定停止和重新啟動 Go 應(yīng)用程序的命令:

./certbot-auto renew --standalone --pre-hook "command to stop Go app" --post-hook "command to start Go app"



有關(guān) Certbot 命令的完整文檔:https ://certbot.eff.org/docs/using.html


查看完整回答
反對 回復(fù) 2022-01-10
?
大話西游666

TA貢獻1817條經(jīng)驗 獲得超14個贊

如果您可以使用 DNS 驗證,那就是續(xù)訂的方法。


要使用證書,只需執(zhí)行以下操作:


    c := &tls.Config{MinVersion: tls.VersionTLS12}

    s := &http.Server{Addr: ":443", Handler: Gzipler(nosurf.New(router), 1), TLSConfig: c}

    log.Fatal(s.ListenAndServeTLS(

        "/etc/letsencrypt/live/XXX/fullchain.pem", 

        "/etc/letsencrypt/live/XXX/privkey.pem"

    ))

這個包含 Gzip 和 CSRF 保護。您可以使用


Handler: router

沒有那些額外的功能。


查看完整回答
反對 回復(fù) 2022-01-10
  • 3 回答
  • 0 關(guān)注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號