目前, https 几乎已经是 web 站点的标配了, http 的站点和服务少之又少.
所以, 现在发布站点或者服务, https 是绕不开的一个点.
其实, 发布 https 还是 http, 对代码来说, 基本没有变化.
https 难度的更多的是在如何创建和部署 SSL 证书上.
下面, 通过简单的例子来演示如何将一个简单 golang gin 服务部署成 https 服务.
s 证书的生成证书的生成和具体的代码没有任何关系.
第一步:下载证书生成软件
通过 keymanager 来生成证书.
下载安装 keymanager 之后, 打开界面如下:
这里面有 1 个证书, 是我之前创建的, 新安装之后应该是空的.
这时, 你可以点击 【创建测试证书】 创建一个测试证书来实验发布 https 服务,
也可以点击 【证书申请】,申请一个真正的 https 证书(需要 freeSSL 帐号,也是免费的)
第二步:创建测试证书
本文主要演示 https 服务的发布过程,避免多余的步骤,所以使用测试证书。用真实证书的也一样,只是申请的过程有区别。
点击 【创建测试证书】之后,只要输入域名,然后点击下面的【创建证书】按钮即可。
第三步:导出证书
在证书列表页面点击【更多】,选择【导出证书】
选择 IIS 格式,并且输入密钥,作为测试我输入的是【12345678】
总结
借助 keymanager 工具,证书的制作非常简单,到这里为止,证书就算制作完成并导出了。
s 证书在 gin 框架中的部署构建简单的 web 服务
为了验证证书是否可用,创建一个简单的基于 gin 框架的 web 服务。
package main
import (
"strconv"
"github.com/gin-gonic/gin"
"github.com/unrolled/secure"
)
func main() {
Ginhttps(false) // 这里false 表示 http 服务,非 https
}
func Ginhttps(ishttps bool) error {
r := gin.Default()
r.GET("/test", func(c *gin.Context) {
c.String(200, "test for 【%s】", "https")
})
if ishttps {
r.Use(TlsHandler(8000))
return r.RunTLS(":"+strconv.Itoa(8000), "/path/to/test.pem", "/path/to/test.key")
}
return r.Run(":" + strconv.Itoa(8000))
}
func TlsHandler(port int) gin.HandlerFunc {
return func(c *gin.Context) {
secureMiddleware := secure.New(secure.options{
SSLRedirect: true,
SSLHost: ":" + strconv.Itoa(port),
})
err := secureMiddleware.Process(c.Writer, c.request)
// If there was an error, do not conTinue.
if err != nil {
return
}
c.Next()
}
}
刚开始,以 http 的方式运行,启动后再浏览器输入 http://localhost:8000/test
证书转换
导出的 IIS 格式的证书无法直接使用,使用以下命令转换出相应的 pem 和 key 文件即可。
openssl pkcs12 -in test.pfx -nocerts -out key.pem -nodes
openssl pkcs12 -in test.pfx -nokeys -out test.pem
openssl rsa -in key.pem -out test.key
test.pfx 是我们导出的证书,如果不是这个名字,替换成你导出的证书名字即可。
使用的命令需要安装 openssl 工具。
改成 https 服务
只需将 main 函数中的调用参数改成 true 即可,其他不用变。
注意上面步骤转换出的 pem 和 key 文件的路径要放对。
func main() {
Ginhttps(true) // 这里true 表示 https 服务
}
注意,这里浏览器上显示【不安全】是因为此 SSL 证书是测试证书,实际项目中使用正式的证书就不会有【不安全】的提示了。
大佬总结
以上是大佬教程为你收集整理的golang gin 框架的 https 配置全部内容,希望文章能够帮你解决golang gin 框架的 https 配置所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。