え、タダで出来ちゃうの?無料のSSL証明書、「Let's Encrypt」をやってみた
こんにちは。初見さんいらっしゃい。
電縁で工数管理ツールInnoPMの販売、開発を担当している関口といいます。
あと最近副業で絵師を始めました。素敵な似顔絵をご希望な方はぜひ私まで。
※こういうのです
すみません、番宣はさておき、今日は最近業務にて使用した「Let’s Encrypt」というものについてご紹介したいと思います。
目次:
1.Let’s Encryptとは?
2.オレオレ証明書と何が違うの?
3.さぁ、やってみよう!
4.おわりに
1.Let’s Encryptとは?
いきなり「Let’s Encrypt」と言われても、「さぁ、暗号化しようぜ!」くらいの情報しかわからないと思いますんで、最初にその説明をしていきます。
みなさんはSSLってご存知でしょうか?IT業界で働いている方なら、馴染み深いと思いますが、それ以外の方ですと、何それーって感じだと思いますので、簡単に説明をします。
SSLというのは通信規格の1つで、URLから見分ける基準としては
- http://~~~ → 通常の通信規格
- https://~~~ → SSL
「s」が最後に付いているかというところが判断基準となります。
もう一つぱっと見でわかる基準としては、ネットサーフィンをしていて、URLの横にこんな鍵マークを見たことはありませんか?
これ、SSL通信をしているマークとなっていて、この表示になっているサイトへの通信は、暗号化してデータをやり取りしているということになります。
住所やパスワードのような、他人に知られたくない情報を入力する際に、この鍵マークが付いていないサイトだと、通信されたデータが暗号化されていないため、第三者(ハッカーやクラッカーなど)へ情報が漏れる可能性があるのです。。。
開発者がこのSSLを利用してWebサイトを作るためには、1年単位などでライセンスを取得し、その証明書を用いる必要があります。
その値段は暗号の強度や、証明している団体によって異なり、SSL業界で高い信頼を誇る「シマンテック」のSSL証明書は、安いもので1年で108,000円もするのです!企業が使うといえ、高いですね。。。
このSSL証明書を無料で発行してくれるサービスが、「Let’s Encrypt」というものなのです。つまり0円でSSLを利用出来ちゃうってことなんですね。
なんで無料でやってくれちゃうの?と思いますが、公式ページではこんな回答をしています。
Let's Encrypt は、認証局(CA)として「SSL/TLSサーバ証明書」を無料で発行するとともに、証明書の発行・インストール・更新のプロセスを自動化することにより、TLS や HTTPS(TLSプロトコルによって提供されるセキュアな接続の上でのHTTP通信)を普及させることを目的としているプロジェクトです。
非営利団体の ISRG (Internet Security Research Group) が運営しており、シスコ(Cisco Systems)、Akamai、電子フロンティア財団(Electronic Frontier Foundation)、モジラ財団(Mozilla Foundation)などの大手企業・団体が、ISRG のスポンサーとして Let's Encrypt を支援しています。
まとめると、SSLを用いた通信を普及させることを目的とし、様々な企業・団体が支援して成り立っているプロジェクトなようです。
2.オレオレ証明書と何が違うの?
この章では開発者には馴染みの深い、「オレオレ証明書」との違いについて説明します。
開発者でない方はSkipしていただければと思います!
オレオレ証明書は、自己署名証明書とも呼ばれ、その名の通り第三者ではなく自分が安全性を保証してSSL証明書を発行するものになります。
本来、SSL通信の仕組みは下の図のような形で行われています。
オレオレ証明書というのは、この③で登場する認証局の役割も自分で担ってしまうという通信です。
例えばAさんがBさんに何か暗号を送ったときに、その鍵の中身をBさんが確認したら「この暗号が正しいかどうかは私(Aさん)に聞いてください」と書いてあるとすると、何が正しいのか何も確認できなくなっていまいますよね。
そんな感じで、オレオレ証明書は正当性が確認できない証明書というものになります。
この証明書でもSSL通信を実現することが可能だったのですが、最近のブラウザはセキュリティのレベルが上がっているため、ほとんどのブラウザで「接続の安全性を確認できません」と表示され、接続が出来なくなってしまいます。
対して「Let's Encrypt」を用いてSSLを証明書を発行すると、証明元が存在し、かつGoogleやMozzila(Firefox)などから認定を受けた正当な証明元なので、ブラウザで安全に接続され、通信を行うことが出来るようになります。
これがオレオレ証明書とLet's Encryptの大きな違いと言えるでしょう。
3.さぁ、やってみよう!
さて、ここからは実践編です。
まず今回、実行した環境は以下です。
作業手順としてはこんな感じ
certbotのインストール
certbotとはLet’sEncryptが提供する、クライアントソフトウェアで、これを使えばSSL証明書の取得・更新作業を自動化出来るようになっています。
今回はこれを使ってサイトのSSL化をしていくので、まずはcertbotをインストールします。
certbot-autoコマンドを叩く
certbotのインストールが完了したら、今度は証明書を発行するために、certbot-autoコマンドを叩いていきます。
そうするとこんな感じの画面が出てくるので、「agree」を選択。
その後、証明書の発行が始まります。
証明書が発行されると、
/etc/letsencrypt/live に置かれます。
中身はこんな感じになっていて、リンクが貼られている形となっています。
apacheの設定変更
続いてSSL化するサイトに証明書を読み込ませます。
これにてSSLの設定は完了です。
SSL自動更新の設定
Let'sEncryptは無料でとても良いサービスなのですが、証明書の有効期限が90日で切れてしまいます。
ただ、証明書の更新を行えばその期限は持続されるので、最後にその自動化を行っていきます。
自動化は簡単で、開発者であればおなじみのcronコマンドを使えばOKです。
このcronを登録すれば、自動更新の設定は完了です。
4.おわりに
個人的に、久々にBlogを書きましたがやっぱり大変ですね。。。
もうやりたくないです。(笑)
うそです、次はどんな記事を書こうかなぁ~(棒読み
そんな感じで次の方、よろしくお願いしまーす!!!
書いた人:なんちゃってエンジニア 関口