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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我是否可以在使用 MTLS 保護(hù)所有其他 HTTP 請(qǐng)求的同時(shí),使用不安全的 GET HTTP 請(qǐng)求

我是否可以在使用 MTLS 保護(hù)所有其他 HTTP 請(qǐng)求的同時(shí),使用不安全的 GET HTTP 請(qǐng)求

Go
滄海一幻覺 2022-10-04 19:27:06
我有一個(gè)用戈蘭語編寫的HTTP REST服務(wù),演示了我正在嘗試的內(nèi)容。我希望 GET 請(qǐng)求不安全,而所有其他 REST 請(qǐng)求都使用 MTLS 進(jìn)行保護(hù)。我的實(shí)現(xiàn)已經(jīng)使用了gin Web服務(wù)器庫(kù),所以如果可能的話,我想堅(jiān)持下去。我的問題是,我只能將tlsConfig應(yīng)用于兩個(gè)組,或者兩者都不應(yīng)用。我無法找到在小組級(jí)別應(yīng)用它的方法。package mainimport (    "crypto/tls"    "crypto/x509"    "errors"    "fmt"    "io/ioutil"    "net/http"    "log"    "github.com/gin-gonic/gin")func main() {    router := gin.Default()    // Unprotected public router for GET requests    public := router.Group("/")    // Private router with MTLS    private := router.Group("/")    public.GET("/insecure-ping", func(c *gin.Context) {        c.JSON(200, gin.H{            "message": "insecure pong",        })    })    private.POST("/secure-ping", func(c *gin.Context) {        c.JSON(200, gin.H{            "message": "secure pong",        })    })    // Get the SystemCertPool, continue with an empty pool on error    rootCAs, err := x509.SystemCertPool()    if err != nil {        log.Fatal(err)    }    if rootCAs == nil {        rootCAs = x509.NewCertPool()    }    // Create a CA certificate pool and add cacert.pem to it    caCert, err := ioutil.ReadFile("cacert.pem")    if err != nil {        log.Fatal(err)    }    if ok := rootCAs.AppendCertsFromPEM(caCert); !ok {        err := errors.New("failed to append CA cert to local system certificate pool")        log.Fatal(err)    }    server := http.Server{        Addr:    fmt.Sprintf(":%v", 8080),        Handler: router,    }    server.TLSConfig = &tls.Config{        RootCAs: rootCAs,    }    err = server.ListenAndServeTLS("certificate.crt", "privateKey.key")    if err != nil {        log.Fatal(err)    }}
查看完整描述

1 回答

?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

只需創(chuàng)建兩個(gè)實(shí)例并同時(shí)運(yùn)行它們,一個(gè)使用 配置相同的路由,另一個(gè)使用 配置。由于 HTTP 和 HTTPS 在不同的端口上運(yùn)行,因此它們必須具有不同的偵聽器,但兩個(gè)偵聽器都可以使用相同(或不同)的處理程序。例如:ServerListenAndServeListenAndServeTLS


publicRouter := gin.Default()


// Unprotected public router for GET requests

public := publicRouter.Group("/")


public.GET("/insecure-ping", func(c *gin.Context) {

    c.JSON(200, gin.H{

        "message": "insecure pong",

    })

})


server := http.Server{

    Addr:    fmt.Sprintf(":%v", 8081), // Or whatever

    Handler: publicRouter,

}


go func() {

    err = tlsServer.ListenAndServe()

    if err != nil {

        log.Fatal(err)

    }

}()


// Private router with MTLS

router := gin.Default()

private := router.Group("/")


private.POST("/secure-ping", func(c *gin.Context) {

    c.JSON(200, gin.H{

        "message": "secure pong",

    })

})


// Get the SystemCertPool, continue with an empty pool on error

rootCAs, err := x509.SystemCertPool()

if err != nil {

    log.Fatal(err)

}

if rootCAs == nil {

    rootCAs = x509.NewCertPool()

}


// Create a CA certificate pool and add cacert.pem to it

caCert, err := ioutil.ReadFile("cacert.pem")

if err != nil {

    log.Fatal(err)

}


if ok := rootCAs.AppendCertsFromPEM(caCert); !ok {

    err := errors.New("failed to append CA cert to local system certificate pool")

    log.Fatal(err)

}


tlsServer := http.Server{

    Addr:    fmt.Sprintf(":%v", 8080),

    Handler: router,

}


tlsServer.TLSConfig = &tls.Config{

    RootCAs: rootCAs,

}


err = tlsServer.ListenAndServeTLS("certificate.crt", "privateKey.key")

if err != nil {

    log.Fatal(err)

}



查看完整回答
反對(duì) 回復(fù) 2022-10-04
  • 1 回答
  • 0 關(guān)注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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