Let’s EncryptでサイトをHTTPS(SSL)化する方法

GoogleがSSL推奨するようになって久しいですね。最近やっと導入したんですが、ビタ一文払いたくないのでせっかくなので無料SSLで話題になった Let’s Encrypt を利用することにしました。ちょっとばかりTerminalで入力しますが割と簡単ですし、まだHTTPS化していないならビタ一文払いたくないので話題の無料SSLを試してみてはいかがでしょうか?
2017-10-18 追記
さくらのレンタルサーバが2017年10月17日からLet’s Encrypt簡単設定機能の提供を開始しました。コントロールパネルからボタン一つで登録を行える上、更新も自動的に行われるという至れり尽くせりな便利仕様です。早速試してみましたが、登録ボタンを押して1時間ほどで登録完了メールが届き、この時点ですでに設定も完了していました。もうややこしいコードを打つ必要はないんです。
という訳でこの投稿、さくらユーザーの方はおろか、自分ですらもう必要ないんですよね… レベルがまるで違う話で恐縮ですが、Google Wave入門書が完成したと思ったらGoogle Waveが開発中止になった悲劇を思い出し、少し気持ちが分かったような気がしました。
今日は壁に塗ったペンキが乾くのを一日中眺めていたい気分です
— ANDO Yasushi (@technohippy) 2010年8月5日
あんどうさんに比べたらダメージは軽いものなので、今日はしばらくメダカでも眺めて過ごそうと思います。
Let’s Encryptの主な特徴
- 無料
- 有効期限は90日
- DV証明書のみ
- 導入がちょっと難しい
- 2018年1月からワイルドカード証明書にも対応
執筆時点ではまだですが、ワイルドカード証明書が嬉しいですね。個人サイトなら十分に試す価値アリだと思います。
使用環境
- サーバ : さくらのレンタルサーバ スタンダード
- 使用OS : MacOS X Yosemite (10.10.5)
- Homebrew : 1.3.4
- Certbot : 0.18.2
Let’s Encrypt 導入手順
文章化すると長く見えますが、やることは意外と少ないんですよ?
- Certbotをインストールして、
- 証明書発行して、
- サーバに登録して、
- SSL有効にしたらできあがり。
たったの4項目! ほら簡単そう!(まとめたら11工程に分かれたけど)
では早速ターミナルを起動してみましょう。
1. HomebrewでCertbotをインストール
gitでインストールする方法もあるようですが、古いMac環境だとバージョンの問題で出来ませんでした。よってマニュアル通り、Homebrewでインストールします。Homebrewのインストールが分からない場合は「Homebrew インストール」でググりましょう。
コマンド
$ brew install certbot
インストールが終わったら、念のためバージョンを確認しておくと安心です。
コマンド
$ certbot --version
結果
certbot 0.18.2
2. Certbotで証明書を取得開始
※Certbotのバージョンによっては多少手順が変わるかもしれません。バージョンが違う場合は以下の記述を鵜呑みにせず、ターミナルに表示される内容をよく読んでから進めてください。
コマンド
$ sudo certbot certonly --manual -d example.com -d www.example.com
- root権限が必要なのでsudo使用
- Certbotはmanualモードで実行
-d ドメイン名
で取得するドメイン名を指定- 複数指定もOK。
-d example.jp,www.example.jp
でも良いようですが、試してないので不明
3. rootパスワードとメールアドレスの入力
以下のようにrootパスワードとメールアドレスを順番に聞かれるので、それぞれ入力します。
rootパスワードの入力
Password:
メールアドレスの入力
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):
4. 規約への同意
メアド入力が済めば、3連続で同意事項。まずは規約(英文)ですが、できればちゃんと読んで A
で同意しましょう。できれば。
-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel:
5. メールアドレスをシェアしてもいいかの確認
Electronic Frontier Foundation にメールアドレスをシェアしていいか聞かれます。ここはご自由に。
-------------------------------------------------------------------------------
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 EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o:
私は N
しました。
6. IPの記録に同意
IPを記録するよ、と言われます。大人しく Y
で同意しましょう。
-------------------------------------------------------------------------------
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.
Are you OK with your IP being logged?
-------------------------------------------------------------------------------
(Y)es/(N)o:
7. ドメイン所有者かどうかの確認作業
IP記録に同意すると、以下のような画面が表示されます。
-------------------------------------------------------------------------------
Create a file containing just this data:
IOHDGPQ9082fwihgapioj3jiojakjIhdajklakdjgaA.PHGEOlhgajpaqjkdjgajj19278yhgpq4tjhasdg431j
And make it available on your web server at this URL:
http://example.com/.well-known/acme-challenge/IOHDGPQ9082fwihgapioj3jiojakjIhdajklakdjgaA
-------------------------------------------------------------------------------
Press Enter to Continue
ここでの注意点は、まだEnterを押さないこと。
(ただし、証明書を取得するドメインが複数ある場合は、Enterを押して取得したいドメイン分表示させます。)
Enterを押す前に、まずは指示に従ってファイルを作成&アップします。手順は以下の通り。
- ローカルに確認用のファイルを作成。上記の場合だと以下の通り。
- ファイル名:IOHDGPQ9082fwihgapioj3jiojakjIhdajklakdjgaA
- 内容:IOHDGPQ9082fwihgapioj3jiojakjIhdajklakdjgaA.PHGEOlhgajpaqjkdjgajj19278yhgpq4tjhasdg431j
- FTPソフトなどでサーバ上に /.well-known/acme-challenge/ というディレクトリを作成
- そこに作成したファイルをアップ
- これを取得したいドメイン分行います。
ファイルの作成&アップが済んだら、Enterを押しましょう。ドメインの確認が始まります。
8. ドメインの確認&証明書の発行完了!
以下のようなメッセージが出れば無事確認が済み、証明書が発行されています。有効期限も表示されているので、リマインダー等に登録しておきましょう。
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2017-12-27. 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
9. 証明書ファイルの確認
サーバに登録するため、以下の場所にある証明書ファイルを確認します。
/etc/letsencrypt/archive/ドメイン名
4ファイルありますが、内容は以下の通り。
ファイル名 | 内容 |
---|---|
certN.pem | サーバ証明書(公開鍵) |
chainN.pem | 中間証明書 |
fullchainN.pem | サーバ証明書と中間証明書が結合されたファイル |
privkeyN.pem | 秘密鍵 |
※N は数字
10. さくらのサーバでSSLを登録する
- さくらのコンパネにログインし、ドメイン設定に移動
- SSLを登録するドメイン名の右にある「登録」リンクをクリック
- 秘密鍵どうこう言われるので、ファイルを選択して秘密鍵(privkeyN.pem)をアップロード
- すると証明書のインストール画面になるので、certN.pemをテキストエディタ等で開き、内容を全てコピー。コンパネのテキストエリアにペーストしたら送信をクリック
- 画面が切り替わったら、「中間証明書のインストール」をクリック
- 今度はchainN.pemを開き、手順4と同様にコピペして送信
これで登録は完了です。次がついに最後の工程!
11. SSLの利用設定
長かった工程もいよいよ最後。
ドメイン設定から利用したいドメインの詳細設定に移動し、「4. SSLの利用をお選びください」の中の「SNI SSLを利用する」を選択。これで送信すれば完了です。
以上でLet’s Encryptの導入、サイトのhttps化は完了です。お疲れさまでした。文章化すると長いな…
ここからはサイトをhttpsに統一したり、wwwあり or なしに統一したり、Wordpressをhttps化したりといった雑務が始まりますが、それはまた今度。
参考サイト
- Let’s Encrypt 総合ポータル
- さくらのレンタルサーバーでLet’s Encryptを使う – Qiita
- Let’s encryptのSSL証明書をMacで作成!さくらレンタルサーバーに導入する方法 | ウェブタタン