API Manager Kongがある環境でLet's Encryptの認証を行う

Kongはnginxを使うので、その設定ファイルを変更する。
Kongの設定ファイルは/etc/kong/kong.confのようなパスで、この情報を元にnginxのテンプレートを書き換えてnginxを動かしている。
そのテンプレートは/usr/local/share/lua/5.1/kong/templates/nginx_kong.luaのようなパスで存在する。

Kong経由でAPIにアクセスするデフォルトのポートは8000または8443だ。
ポート80が使えるならば、テンプレートに
server {
 listen 80;
 listen [::]:80;
 server_name MY.DOMAIN;
 root /var/www/html;
}
のような設定を追加する。

Kong経由でAPIにアクセスするポートが80で、サーバーを停止せずにLet's Encryptの認証を行う設定を考える。
kong.confで
- #proxy_listen = 0.0.0.0:8000, 0.0.0.0:8443 ssl
+ proxy_listen = 0.0.0.0:80, 0.0.0.0:443 ssl
と変更し、nginx_kong.luaに
location /.well-known/ {alias /var/www/html/.well-known/;}
をどのlocationの設定よりも先になるように加える。
そしてKongを再起動する。

Let's Encryptの認証を行う:
certbot certonly -n --agree-tos -m MY@MAIL.ADDRESS --webroot -w /var/www/html -d MY.DOMAIN
その証明書をKongで使うならば、kong.confの設定を変更する:
- #ssl_cert =
- #ssl_cert_key =
+ ssl_cert = /etc/letsencrypt/live/MY.DOMAIN/fullchain.pem
+ ssl_cert_key = /etc/letsencrypt/live/MY.DOMAIN/privkey.pem
2019/08/25 05:39
タグ