運営者情報

運営してるひと: @sters9

       

妻と猫と横浜あたりに住んでいる。最近は Go や Kubernetes や GCP をしています。 PHP や JavaScript もすこし。

プライバシーポリシー

tools.gomiba.co

アーカイブ

2021/02 (12) 2021/01 (8)

2020/05 (2) 2020/04 (2) 2020/02 (2) 2020/01 (1)

2019/12 (3) 2019/11 (2) 2019/10 (5) 2019/09 (3) 2019/07 (6) 2019/06 (4) 2019/04 (3) 2019/01 (2)

2018/12 (6) 2018/10 (4) 2018/09 (6) 2018/08 (7) 2018/07 (16) 2018/06 (7) 2018/05 (7) 2018/04 (5) 2018/03 (3) 2018/02 (10) 2018/01 (6)

2017/12 (8) 2017/11 (6) 2017/10 (10) 2017/09 (12) 2017/08 (12) 2017/07 (3) 2017/06 (1) 2017/01 (4)

2016/12 (5) 2016/10 (3) 2016/09 (1) 2016/07 (2) 2016/06 (1) 2016/04 (1) 2016/02 (1) 2016/01 (2)

2015/12 (1) 2015/10 (1) 2015/09 (3) 2015/06 (1) 2015/01 (1)

2014/08 (2) 2014/07 (3) 2014/05 (1) 2014/01 (7)

2013/12 (2) 2013/11 (4) 2013/10 (1) 2013/09 (1) 2013/08 (3) 2013/07 (4) 2013/06 (5) 2013/05 (2) 2013/04 (7) 2013/03 (1)

gomiba.co.in を https にした

この記事は公開されてから1年以上経過しており、情報が古くなっている可能性があります。

目次

こんにちは、ごみばこです

実はさらっと、ごみばこいんを https にしてました。 以前にも一度やっていたのですが、何かに詰まり、元に戻していました。またやったら特に問題なく出来てしまったので、何だったんだろう…。。

個人のひっそりページで証明書買うのもなあ、ということで Let’s Encrypt でhttps化を行いました。

そのやったことなんかを簡単に説明していきます。

https

http 通信ではなく https 通信にすると、クライアントとサーバ間の通信経路が暗号化されます。 暗号化することによって、なりすまし、改ざん、盗聴といった、第三者による介入を回避することが可能になります。 webを安全に、フリーに扱うことができるようになります。

暗号化は、サーバから配送される証明書(=公開鍵)を用いて、サーバ上の鍵ファイル(=秘密鍵)を使った、公開鍵暗号方式となります。 もっと詳細な https プロトコルについてあまり詳しくはないので、

この証明書は、自分の手でも作ることができますが、信用された機関から発行されたものでないと、クライアントが証明書を信用することができません。 信用された機関も、むやみに証明書を発行することはなく、実在性や正当性を確認したうえで発行します。

具体的にはもっといろいろと計算やサーバ・クライアント間のやりとりがあるのですが、ぼくが https プロトコルに詳しくないので、このあたりで。。汗

こういったwebページが参考になるかもです。 https://www.symantec.com/ja/jp/ssl-certificates/

Let’s Encrypt

https://letsencrypt.org/

Let’s Encrypt は無料で、自動で、オープンな証明機関です。さっきまでの話と異なりますね。

近年のインターネット、webの発達を受けて、もっと安全に利用できるように https を推進している団体(EFF)がいて、ここに web やセキュリティに強い企業が手伝って、いろいろないろいろが出来ているようです。 (詳しく見れていない。。。)

で、今回ごみばこいんは、こちらの Lets’s Encrypt を利用して https にしましたよー、という話です。

導入していく

Let’s Encrypt を利用するには ACME という証明書を発行するプロトコルを使って、証明書を発行する必要があります。 そのプロトコルでやりとりできるツールの一つが certbot です。

ACME プロトコル https://ietf-wg-acme.github.io/acme/

certbot https://certbot.eff.org/

ごみばこいんでは、以前 Let’s Encrypt を試そうとしていたところもあったので、一度これを消去します。 ※ルートのホームディレクトリに居ただけ

# rm -rf ~/letsencrypt/

certbot を導入します。

# wget https://dl.eff.org/certbot-auto
# chmod a+x certbot-auto

起動確認

# ./certbot-auto

私の環境では Python 2.6 しかいなかったようなので(!?) Python 2.7 を入れました

# wget https://centos6.iuscommunity.org/ius-release.rpm
# rpm -ivh ius-release.rpm
# yum install python27 python27-devel python27-pip python27-setuptools python27-virtualenv
# rm ius-release.rpm

再び起動確認

# ./certbot-auto

certbot-auto が使えるようになったことが分かったので、プロパティを設定し、証明書を発行していきます

# ./certbot-auto certonly --webroot -w /var/www/html/ -d gomiba.co.in -m webmaster@gomiba.co.in --agree-tos

ごみばこいんでは nginx を利用しているので、この設定を変更し https を有効にします。

# vi /etc/nginx/conf.d/server.conf

↓こんな感じのものを書き足しました

server {
    listen 443;

    ssl on;

    # ※certbotを実行したときにパスが出ると思うのでそれを使います!
    ssl_certificate /etc/letsencrypt/live/gomiba.co.in/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/gomiba.co.in/privkey.pem;

    # ※https で使える暗号方式ですが、古い暗号方式は脆弱性があるなどなので無効化するのが吉です
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:!DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!ECDHE-RSA-DES-CBC3-SHA:!ECDHE-ECDSA-DES-CBC3-SHA;


    # 有効なプロトコル
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    # セッションをキャッシュすることでCPUに余裕を持たせます
    ssl_session_cache shared:SSL:5m;

    # ※ドキュメントルートの設定など
}

※暗号方式のところは、設定後にチェックツールを利用するのがおススメです https://globalsign.ssllabs.com/

nginx を再起動

# service nginx restart

https で接続ができるか確認し、無事に出来たのでこれにておしまいです。

ちなみに Let’s Encrypt で発行した証明書は90日で期限が切れてしまうので、crontab で自動更新するのが良いです。これは certbot のユーザガイドにも書かれています。

# crontab -e

↓こんな内容を記述

# certbot
0 12 * * * /root/certbot-auto renew -q --no-self-upgrade --post-hook "service nginx reload"

これで Let’s Encrypt がサービス終了にならない限り、ずっと https が利用できます。

おわり

certbot を使うと、簡単に証明書を発行でき https を有効にすることができました。

Let’s Encrypt で発行される証明書を有料の証明書と比べる比べると、企業や団体としての存在証明を行うことはできないので、より信頼性の高める必要のある web サイトで利用することは難しいかもしれませ。しかし、個人で利用する程度のものでは十分だと思います。

安全な web サイトにするためにも、ぜひ使っていきましょう!