手把手教你在Kong Gateway上部署SSL证书,提升安全性

本文将基于从阿里云服务器上,演示如何给kong-gateway配置SSL证书,并实现外部服务器进行访问。

前置条件

1、已经安装运行的kong gateway服务

没有可以参考之前的链接: centos 7.x无法安装kong gateway 3.9X的解决方案来进行安装。这里演示的是裸机通过yum 的方式进行安装的。

2、linux 服务器(最好是云服务器,没有可以使用自己的虚拟机也不影响)

3、已经购买的好的域名

没有也可以,但是需要在访问的机器的上配置域名解析。

一、准备后端服务

这里以一个Golang编写的hello world程序为例,原代码如下:

package main

import (
	"flag"
	"fmt"
	"net/http"
)

var port = flag.String("port", "8080", "HTTP server port")

// 处理 HTTP 请求
func helloHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello, kong,I'm runing at %s!", *port)
}

func main() {
	// 通过命令行参数设置端口,默认 8080

	flag.Parse()

	// 设置路由
	http.HandleFunc("/hello", helloHandler)

	// 启动服务器
	addr := ":" + *port
	fmt.Println("Server is running on http://localhost" + addr)
	err := http.ListenAndServe(addr, nil)
	if err != nil {
		fmt.Println("Error starting server:", err)
	}
}

将上面的程序编译,上传到linux服务器上。

SET GOOS=linux
SET GOARCH=amd64
go build -o hello-kong main.go

上传 服务器/data/app

mkdir -p /data/app
cd /data/app
[root@iZbp1ivu3yaedumdy0va2vZ app]# ls
hello-kong
# 授予可执行权限

启动该服务

[root@iZbp1ivu3yaedumdy0va2vZ app]# ./hello-kong &
[1] 80684
[root@iZbp1ivu3yaedumdy0va2vZ app]# Server is running on http://localhost:8080
[root@iZbp1ivu3yaedumdy0va2vZ app]# curl -X GET http://localhost:8080/hello
Hello, kong,I'm runing at 8080![root@iZbp1ivu3yaedumdy0va2vZ app]#

至此,上游服务准备完成

二、在kong上创建kong-hello服务

2.1、创建服务

curl -i -s -X POST http://localhost:8001/services --data name=hello-kong --data url='http://localhost:8080'

2.2、查看已经创建好的服务

curl -X GET http://localhost:8001/services/hello-kong
{
    "path": null,
    "tls_verify": null,
    "tls_verify_depth": null,
    "retries": 5,
    "protocol": "http",
    "port": 8080,
    "name": "hello-kong",
    "write_timeout": 60000,
    "client_certificate": null,
    "created_at": 1739244379,
    "updated_at": 1739244379,
    "connect_timeout": 60000,
    "enabled": true,
    "tags": null,
    "ca_certificates": null,
    "id": "789d8ffc-ab33-47dd-b595-15887f0d1ed9",
    "host": "localhost",
    "read_timeout": 60000
}

2.3、 创建对应的路由

curl -i -X POST http://localhost:8001/services/hello-kong/routes \
  --data 'paths[]=/hello-kong' \
  --data name=hello-kong

三、访问服务

[root@iZbp1ivu3yaedumdy0va2vZ ~]# curl -X GET http://localhost:8000/hello-kong/hello
Hello, kong,I'm runing at 8080!

四、从阿里云上获取证书

这里以从阿里获取免费的SSL证书为例,这里的域名为hdsw.top

4.1、登录阿里云官网,查询 ==》数字证书管理服务

查找数字证书管理服务控制台

4.2、购买免费的个人证书

在这里插入图片描述

每年每个账号可以领取20个免费证书。这里已经购买了,所以直接可以创建证书

在这里插入图片描述

4.3、创建证书

域名名称输入你自己的,如果没有也可以随便输入,但是后续没法通过域名解析

在这里插入图片描述

4.4、下载证书

点击更多进入到证书的详情页面

1739260240771)

在这里插入图片描述

4.5、将下载的证书上传到服务器上

存放的目录:/usr/local/kong/ssl

[root@iZbp1ivu3yaedumdy0va2vZ ssl]# ls hdsw.top.*
hdsw.top.key  hdsw.top.pem
[root@iZbp1ivu3yaedumdy0va2vZ ssl]# pwd
/usr/local/kong/ssl

五、配置kong gateway的配置文件

打开/etc/kong/kong.cnf文件
如果没有,执行下面操作:

cp /etc/kongkong.conf.default /etc/kong/kong.conf
vi /etc/kong/kong.conf
#  修改proxy_listen,修改完成后将只会监听443端口
proxy_listen = 0.0.0.0:443 ssl
# ssl_cert  ssl_cert_key 配置证书文件
ssl_cert =/usr/local/kong/ssl/hdsw.top.pem
ssl_cert_key = /usr/local/kong/ssl/hdsw.top.key

六、重启kong gateway服务

这里注意,不能使用kong reload命令来重新加载配置,不会生效。

[root@iZbp1ivu3yaedumdy0va2vZ kong]# kong restart
Kong stopped
Kong started
[root@iZbp1ivu3yaedumdy0va2vZ kong]# netstat -lutpn | grep 443
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      87633/nginx: master

从上面已经可以看出服务器目前已经在443上正常运行了

七、配置/etc/hosts文件(可选)

第八步的域名解析生效,不配置也可以

[root@iZbp1ivu3yaedumdy0va2vZ ~]# cat /etc/hosts
::1     localhost       localhost.localdomain   localhost6      localhost6.localdomain6
127.0.0.1       localhost       localhost.localdomain   localhost4      localhost4.localdomain4

172.17.73.139   iZbp1ivu3yaedumdy0va2vZ iZbp1ivu3yaedumdy0va2vZ
# 内网地址
172.17.73.139   hdsw.top
# 公网地址
8.136.113.183   hdsw.top

八、给域名添加域名解析

在这里插入图片描述

九、 测试通过域名访问

[root@iZbp1ivu3yaedumdy0va2vZ ~]# curl -X GET https://www.hdsw.top/hello-kong/hello
Hello, kong,I'm runing at 8080![

通过浏览器进行访问:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值