最近LINEのMessaging Apiにさわることがあった
一方的に通知がくるものだけでなくそれに対してReplyがくるbot的なものを作る
そんな時に使うのがWebhookという機能 公式doc
botをルーム内にいれておくことで誰かが発信をした際にwebhookで指定したURLにpostでリクエストがくる
ただこのWebhookのURLは https のURLを指定しないといけない!!
最近は無料証明書が増えてきたしHerokuとか使えばhttps化した状態で使える便利な時代
でも自前のサーバーでLet's Encryptを使いたい
話さないこと
- Let's Encryptのいれかた
- itamae使っている人はレシピプラグイン作ったので良かったら使ってください itamae-plugin-recipe-letsencrypt
- WebhookでPostをうけた後の処理
まず起きたこと
現状だと ここから Webhookの指定ができる
URLの横の VERIFY ボタンから疎通するかのテストが通る
ここでsuccessが出ればOK!
しかし出ない... 代わりに SSL certificate is invalid.
何が問題だったのか
nginxのkeyの指定ミスってました
最小限の設定だけのせる
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/hoge.example.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/hoge.example.com/privkey.pem;
どう解決したか
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/hoge.example.com/fullchain.pem; # これ
ssl_certificate_key /etc/letsencrypt/live/hoge.example.com/privkey.pem;
そもそもなんだったのか
Let's encryptを使って証明書を発行すると4つほどファイルがはかれる
サーバ証明書(公開鍵): /etc/letsencrypt/live/[ドメイン名]/cert.pem
中間証明書: /etc/letsencrypt/live/[ドメイン名]/chain.pem
サーバ証明書と中間証明書が結合されたファイル: /etc/letsencrypt/live/[ドメイン名]/fullchain.pem
秘密鍵: /etc/letsencrypt/live/[ドメイン名]/privkey.pem
サーバー証明書と秘密鍵の指定でもhttps化はするのですが、中間証明書をはさんだほうが不正改ざんや傍受が難しくなるので
信頼度が高いということでしょうか
とりあえず無事WebhookでPostリクエストがきたので良かったです