【2020年版】Let’s Encryptで無料でSSL証明書を入手する

Linux
スポンサーリンク

  

WEBアプリケーションを作成するうえで欠かせないのがドメインとSSL証明書。

HTTPS通信がグローバルスタンダードになりつつあるWEB界隈(というかもうなっているのだが)、暗号化ができない通信は信用できないという風潮があります。

この前作成したAPIもその例にもれず、さくらのVPS + FlaskでAPIサーバを立てたはいいが、httpsでの通信ができずに四苦八苦していました。

必要なのはドメインと証明書。

特にSSL証明書はグローバルサイン社なんかで購入しようとすると、とんでもないお金がかかってしまいます。

別に趣味でプログラミングしてるだけですし、作成したアプリケーションでお金を稼ぐつもりもない。

なので可能な限り安くすませたい・・・。

そんなことを思いながらどうにか安上りでSSL通信を利用できる方法がないかを調べてたら、ありましたよ。

Let’s Encrypt

ってやつが。

 

どうやら、ドメインさえ取得してしまえば無料で証明書を発行してくれるサービスらしい。

というわけで、早速使ってみました。

 

スポンサーリンク

Let’s Encryptとは

Let’s Encrypt(レッツ・エンクリプト)は、2016年4月に正式に開始された認証局である。自動化された発行プロセスにより、TLSのX.509証明書の発行を無料で行っている

Let’s EncryptはInternet Security Research Group(英語版)(ISRG)がサービスを提供している。主要なスポンサーは電子フロンティア財団 (EFF)、Mozilla Foundation、アカマイ・テクノロジーズ、シスコシステムズである。 その他の関係団体としては認証局のIdenTrust(英語版)、ミシガン大学、スタンフォード・ロー・スクール、Linux Foundationなどがあり、レイセオン/BBNテクノロジーズのStephen Kent、CoreOSのAlex Polvなどが関わっている。

https://ja.wikipedia.org/wiki/Let%27s_Encrypt

wikiから引用すると、どうやらアメリカのISRGという非営利団体が無料で証明書を発行する認証局のようです。

なるほど、親切な方がいるものなんですね()

 

証明書発行プロセスを自動化することで、かなり簡単に証明書を発行してくれるそう。

そのかいもあって、なんと発行自体はワンラインのコマンドで実行可能。

CentOSやDebianのリポジトリにも導入されているようです。すごい。

 

Let’s Encrypt 利用手順

とても簡単に利用できるLet’s Encrypt。

実際に使用してみます。

 

環境

VPS: さくらのVPS

OS: CentOS7.7

カーネル:3.10.0-957.10.1.el7.x86_64

 

事前準備

Let’s Encryptは証明書は発行してくれますが、そのためのドメインは発行してくれません。

そのため、あらかじめ自身でドメインを準備しておく必要があります。

今回は、お名前ドットコムにて以下のドメインを取得したこととして話を進めます。

hogehoge.work
test.hogehoge.work
※両方とも架空?のドメインです。少なくとも自分は取得していません。

test.hogehoge.work は hogehoge.work のサブドメインとします。

なんで.workドメインなのかって?

お名前ドットコムで初年度1円だったからだよ。安い。

 

※ちなみに、.workドメインはSEO的にあまりよろしくないらしい。

 まあ、今回はAPIサーバ用のドメインなので、検索順位には全くこだわってないからOK。

 

certbot のインストール

Let’s Encrypt はコマンド1つで利用できると説明しましたが、まずはそのコマンドを利用するためのソフトウェアパッケージをインストールします。

それが certbot。

epelリポジトリに含まれているので、epel入れてない人は一緒に入れましょう。

# yum install epel-release
# yum install certbot

ちなみに、証明書を導入したいサーバでApacheやNginx等を利用している場合は別のモジュール?もインストールが必要です。

その場合のやり方はこちらのブログなんかが参考になるかと思います。

今回はそれらが動作していない環境での導入手順となります。

 

証明書取得申請

では実際に証明書を申請してみます。

とはいえ、以下のコマンドを実行するだけ。めっちゃ簡単!

# certbot certonly --standalone -d hogehoge.work -d test.hogehoge.work

–standaloneオプションを利用すると、実行したサーバにて80,443ポートを利用して証明書の申請を行ってくれるそうです。

すでにNginx等でそれらのポートが使用されている場合は失敗してしまうので注意です。

また、-dで申請したいドメインとそのサブドメインを指定します。

今回はhogehoge.workとそのサブドメインであるtest.hogehoge.workを指定。

コマンドを実行すると以降対話形式で処理が進みます。

 

 Saving debug log to /var/log/letsencrypt/letsencrypt.log
 Plugins selected: Authenticator standalone, Installer None
 Enter email address (used for urgent renewal and security notices)
 (Enter 'c' tocancel): [メールアドレスを入力]

まずはメールアドレスを聞かれます。

申請においてメールアドレスを利用した手順はありませんが、証明書の期限が切れる前に通知してくれたりするようです。

架空のメールアドレスを入力したらどうなるかは・・・不明。

あんまりふざけると証明書を発行してくれなくなるかもしれませんし、やらないほうがいいでしょう。

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 Please read the Terms of Service at
 https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
 agree in order to register with the ACME server at
 https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
(A)gree/(C)ancel: A

利用規約を読んでねっていうメッセージが出力されます。

英語なので全然理解できませんでしたが形だけ読んで「A」を入力。

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 Would you be willing to share your email address with the Electronic Frontier
 Foundation, a founding partner of the Let's Encrypt project and the non-profit
 organization that develops Certbot? We'd like to send you email about our work
 encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
(Y)es/(N)o:N

Electronic Frontier Foundationってところにメールアドレスを共有していいですか?って感じのメッセージが表示されます。

共有するとメルマガっぽいのを送ってくれるようになる?(英語わからん)のですが、よくわからんかったのでNを入力しました。

Noにしても普通に申請は進みます。

 

 Obtaining a new certificate
 Performing the following challenges:
 http-01 challenge for test.hogehoge.work
 http-01 challenge for hogehoge.work
 Waiting for verification…
 Cleaning up challenges
 IMPORTANT NOTES:
 Congratulations! Your certificate and chain have been saved at:
 /etc/letsencrypt/live/hogehoge.work/fullchain.pem
 Your key file has been saved at:
 /etc/letsencrypt/live/hogehoge.work/privkey.pem
 Your cert will expire on 2020-04-28. To obtain a new or tweaked
 version of this certificate in the future, simply run certbot
 again. To non-interactively renew all of your certificates, run
 "certbot renew"
 Your account credentials have been saved in your Certbot
 configuration directory at /etc/letsencrypt. You should make a
 secure backup of this folder now. This configuration directory will
 also contain certificates and private keys obtained by Certbot so
 making regular backups of this folder is ideal.
 If you like Certbot, please consider supporting our work by:
 Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 Donating to EFF:                    https://eff.org/donate-le 

こんな感じのメッセージが出たら、申請&証明書取得完了です。

めっちゃ簡単ですね。

ちなみに、発行された証明書は以下のパスに保存されていました。

/etc/letsencrypt/live/hogehoge.work

これを利用して、nginxなりapacheなりFlaskなりで設定をしてあげるとhttpsでのアクセスができるようになります。

超簡単で超速で発行されるので、検証したい場合や個人で楽しみたい場合、私みたいに商用でないアプリケーションを公開したりする場合に重宝しますね。

 

ちなみに、証明書の期限は90日。

証明書の更新も無料らしいので、安心して使用できますね。

 

まとめ

  • 無料で証明書を発行できる「Let’s Encrypt」がすごい
  • 申請や発行はサーバでコマンドを実行するだけ
  • ただしドメインはついてこないので注意

どうやら証明書の更新も自動化できるらしいので、その手順も確立したら紹介しようと思います。

コメント

タイトルとURLをコピーしました