ぱろっと・すたじお

技術メモなどをまったりと / my site : http://parrot-studio.com/

Chromeに煽られたので、あまり使ってないサイトもhttps対応する

一年半ぶりの更新になります...φ(・ω・`)

その間にも「チェンクロパーティーシミュレーター」(以下、ccpts)に
大量の技術的な更新を入れていたのですが、
ついつい仕事を優先してBlogを書いてませんでした

ccpts.parrot-studio.com

github.com

  • ccptsの主な更新内容

その中のトピックスの一つが「(ccptsの)https対応」で、
昨年の冬くらいに対応し、暗号化方式でなんやかんや悩んだ記憶があるのですが、
とりあえず置いておいて・・・Σ(・ω・ノ)ノ

昨日、Chromeがアップデートされ、「httpは安全ではない」と表示されるようになりました

forest.watch.impress.co.jp

実質まともに動かしているのはccptsくらいなのですが、
念のためポータル的なサイトの方も対応しておくことに...φ(・ω・`) *1

https://parrot-studio.com/

とはいえ、現在は「Let's Encrypt」という素敵な仕組みが存在し、
やろうと思えば数分でhttps対応が終わってしまうご時世です

letsencrypt.org

letsencrypt.jp

ccptsをhttps対応した頃は、まだツール(certbot)の精度がいまいちで、
(特にnginxだと)多少苦労があったり、自動更新がうまくいかなかったりしましたが、
クライアントが「certbot-auto」に移行してからは、さらに簡単になりましたヽ(`・ω・´)ノ

基本的にはここに書いてある通りで、nginxでもapacheでも余裕です

Let's Encrypt の使い方 - Let's Encrypt 総合ポータル

  1. certbot-autoをwgetしてchmod +x
  2. certbot-autoを初回起動して必要なライブラリを取得
  3. certbot-autoをドメイン名つき起動し、証明書発行してもらう
  4. (途中でメールアドレスを求められるので入力)
  5. ローカルに生成された証明書をconfに書く
  6. portをあける
  7. nginx or apacheを再起動

これだけです(`・ω・´) b

一度証明書を取得してしまえば、環境情報がサーバに保存されるため、
cronにセットしてしまえば、再取得も簡単にできます

$ sudo crontab -l

# 週に一回 "certbot-auto renew" を実行する(念のため、実行ログも取る)
2 5 * * 0 /path/to/certbot-auto renew >>/hoge/piyo/certbot.log 2>>/hoge/piyo/certbot_err.log

証明書の期限は90日で、1ヶ月くらい前から更新が可能になりますが、
更新が不要な場合はメッセージだけ出して無視してくれます(`・ω・´)

最悪、cronでの更新がうまくいかなくても、証明書作成時に登録したメールアドレスに、
「もうすぐ期限が切れます」というメールが届くので、手動で更新すれば大丈夫です
(以前はそのような運用をしてました)

あとは・・・問題なければhttpからhttpsにリダイレクトしてあげるといいのですが、
ccptsではやっているものの、ポータルの方はほっといてます

server {
    listen 80;
    listen [::]:80;
    server_name ccpts.parrot-studio.com;
    return 301 https://$host$request_uri; # redirect to https
}

server {
  listen 443;
  listen [::]:443;
  server_name ccpts.parrot-studio.com;

  # 以下略

}

慣れれば本当に数分のレベルですので、業務でいきなり導入する前に、
ぜひ自分のサイトでお試しを(´・ω・)っ


<2018/8/28追記

cronを使ってnginxの証明書を更新しようとした場合、
nginxのpathを見失って更新できないことがあります

その場合、crontabにPATHを明示する必要があります

$ sudo crontab -l

# PATHを明示
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin # その他必要なPATH

# 以下同じ

cronあるあるですが、忘れやすいのでご注意を(´-ω-)

*1: はてなBlogも現在はhttpsに対応しています・・・が、mixed contentへの対応がやや面倒な感じです(´-ω-)