目录 概述

目前, https 几乎已经是 web 站点的标配了, http 的站点和服务少之又少.
所以, 现在发布站点或者服务, https 是绕不开的一个点.

其实, 发布 https 还是 http, 对代码来说, 基本没有变化.
https 难度的更多的是在如何创建和部署 SSL 证书上.

下面, 通过简单的例子来演示如何将一个简单 golang gin 服务部署成 https 服务.

s 证书的生成

证书的生成和具体的代码没有任何关系.

第一步:下载证书生成软件

通过 keymanager 来生成证书.

下载安装 keymanager 之后, 打开界面如下:

golang gin 框架的 https 配置

这里面有 1 个证书, 是我之前创建的, 新安装之后应该是空的.
这时, 你可以点击 【创建测试证书】 创建一个测试证书来实验发布 https 服务,
也可以点击 【证书申请】,申请一个真正的 https 证书(需要 freeSSL 帐号,也是免费的)

第二步:创建测试证书

本文主要演示 https 服务的发布过程,避免多余的步骤,所以使用测试证书。用真实证书的也一样,只是申请的过程有区别。
点击 【创建测试证书】之后,只要输入域名,然后点击下面的【创建证书】按钮即可。

golang gin 框架的 https 配置

golang gin 框架的 https 配置

第三步:导出证书

在证书列表页面点击【更多】,选择【导出证书】

golang gin 框架的 https 配置

选择 IIS 格式,并且输入密钥,作为测试我输入的是【12345678】

golang gin 框架的 https 配置

总结

借助 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

golang gin 框架的 https 配置

证书转换

导出的 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 服务
}

golang gin 框架的 https 配置

注意,这里浏览器上显示【不安全】是因为此 SSL 证书是测试证书,实际项目中使用正式的证书就不会有【不安全】的提示了。

大佬总结

以上是大佬教程为你收集整理的golang gin 框架的 https 配置全部内容,希望文章能够帮你解决golang gin 框架的 https 配置所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。