LoginSignup
11
9

More than 5 years have passed since last update.

Let's Encrypt + NGINX でLINE botを作るときの注意点を1つだけ

Posted at

最近LINEのMessaging Apiにさわることがあった
一方的に通知がくるものだけでなくそれに対してReplyがくるbot的なものを作る

そんな時に使うのがWebhookという機能 公式doc 
botをルーム内にいれておくことで誰かが発信をした際にwebhookで指定したURLにpostでリクエストがくる

ただこのWebhookのURLは https のURLを指定しないといけない!!

最近は無料証明書が増えてきたしHerokuとか使えばhttps化した状態で使える便利な時代
でも自前のサーバーでLet's Encryptを使いたい

話さないこと

  • Let's Encryptのいれかた
  • WebhookでPostをうけた後の処理

まず起きたこと

現状だと ここから Webhookの指定ができる
URLの横の VERIFY ボタンから疎通するかのテストが通る
ここでsuccessが出ればOK!
しかし出ない... 代わりに SSL certificate is invalid.

スクリーンショット 2016-12-20 9.02.33.png

何が問題だったのか

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;

どう解決したか

OKな方
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リクエストがきたので良かったです

11
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9