本文将基于从阿里云服务器上,演示如何给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、下载证书
点击更多进入到证书的详情页面


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
645

被折叠的 条评论
为什么被折叠?



