登录
首页 >  Golang >  Go问答

启用 AWS Lambda 中 Go HTTP API 的 mTLS 加密

来源:stackoverflow

时间:2024-03-12 18:54:27 117浏览 收藏

本篇文章给大家分享《启用 AWS Lambda 中 Go HTTP API 的 mTLS 加密》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

目前有一个使用 github.com/gin-gonic/gin 库的 go http api,设置为执行 mtls,如下所示:

router := gin.New()
router.GET("/ping", handlers.GinHandler{GC: globalConf, H: handler.Ping}.Handle())

// I'm checking errors but just for simplicity it's ommitted
caCert, _ := ioutil.ReadFile("ca.crt")
caCertPool, _ := x509.SystemCertPool()
caCertPool.AppendCertsFromPEM(caCert)

tlsConfig := &tls.Config{
    ClientCAs:  caCertPool,
    ClientAuth: tls.RequireAndVerifyClientCert,
}

server := &http.Server{
    Addr:      ":" + "8443",
    TLSConfig: tlsConfig,
    Handler:   router,
}

server.ListenAndServeTLS("ssl.crt", "ssl.key")

看来我需要使用类似 github.com/apex/gateway 的东西来与 aws lambda 兼容,但只有 listenandserve 函数,而不是像 net/http 包那样的 listenandservetls

是否可以在 aws lambda 函数内执行这样的 mtls?

或者是否需要重写以在 api 网关内执行 mtls?如果是,是否可以将证书转发到go应用程序/lambda函数以检查cn?


正确答案


不,这是不可能的。 TLS 连接由 API 网关终止,然后 API 网关通过 AWS API 调用您的 Lambda 函数。 Lambda 函数永远不会与传入请求建立网络连接,因此无法在 Lambda 函数内执行 mTLS。

是的,mTLS 功能必须在 API Gateway 上实现。我建议关注this official guide

终于介绍完啦!小伙伴们,这篇关于《启用 AWS Lambda 中 Go HTTP API 的 mTLS 加密》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>