超簡単AWSサーバ構築法 …Let’s Encrypt SSL証明書 設置手順 (授業編)

AWS

どうも、平島です。SSL証明書って知っていますか?

「あーーあのブラウザで?セキュリティで?なんか鍵マークのやつ?」って思いつく方。その通り正解です。ネットワークの通信路を、悪意ある人や端末や bot からを守ってくれてる技術です。

前回は、太平洋のど真ん中にある「トケラウ」のtkドメインを取得して、サーバに関連付けることができました。これで世界のどこからでも、このサーバにドメイン名でアクセス出来るようになったわけですが、今回はSSL証明書を取得して、このサーバに設置することを目指します。そして今回も、無料でSSL証明書を取得して設置します。

Let’s Encrypt という、無料証明書を発行してくれる機関の certbot というプログラムを用いて自動設置します。とても便利で、心から感謝です。

SSLって深いんです。そして、その仕組みもとても面白いんです。全貌をご説明することは今回分量的に難しいので少量に控えて、また後日で。

AWSのサーバ構築とかSSLとか勉強したい人など、誰かの役にも立てればいいな。

1.SSL、はじめに

SSLは、Secure Socket Layerの略ですが、実はセキュリティ上の懸念から、現在「SSL」と名前の付くセキュリティの仕組み(SSLv3など)はすでに利用されていません。代わりに利用されているのは、TLS(Transport Layer Security)という名前の仕組みです。ただ、SSLの名前は既に広く認知されていますので、最近は SSL/TLS という風に組み合わせて使われています。ただ面倒なので、このサイトではSSLで通します。

さて、Webサーバに、SSLを設置するために必要なものは、以下3点です

1)秘密鍵 …公開鍵暗号方式の片方の鍵ですね。誰にも見られちゃダメです、

2)サーバ証明書 …CAから発行してもらった、サーバ自身の証明書ですね

3)CA証明書(+中間CA証明書) …CAや、中間CAの証明書です

この3つがあれば、Webサーバに登録を行うことで使えるようになります。

また、この3つを使ってSSL通信を担保する方法ってのは、ざっくり、

・サーバが、「サーバ証明書」をクライアントに送り、

・クライアントは、「サーバ証明書」が問題ないか検証を行います

・クライアントは、問題なければ「サーバ証明書」から、サーバの公開鍵を取得します

・クライアントは、「鍵の基」をサーバの公開鍵で暗号化して、サーバに送ります

・サーバは、受け取ったものをサーバの秘密鍵で複合して「鍵の基」を受け取ります

という感じになります。これで「鍵の基」が安全にサーバとクライアントで共有されますので、これ以降の通信は、「鍵の基」から作られた共通鍵MAC鍵で、暗号化通信を行います。SSL通信の準備、完成です。

へーそうなんだ、、、くらいで理解はOKです。早速、実際のサーバの構築に行きましょう。

2.Webサーバへ、SSLの機能追加

最初の時点では、設置したApacheにSSLを処理する機能自体が備わっていませんので、まずインストールしたく思います。SSLを処理する機能は、mod_sslという名前の、Apacheを機能拡張するモジュールです。ターミナルで接続して、このコマンドを流します。

# yum install -y mod_ssl

3.Webサーバの設定ファイルへ、ドメイン名の追加

次に、Webサーバに設置したドメイン名をちゃんと教えてあげましょう。

Apache のメイン設定ファイル /etc/httpd/conf/httpd.conf を編集します。

# vi /etc/httpd/conf/httpd.conf

そして、「Listen 80」の部分を見つけてその後ろに赤枠部分を追加します。

4.「certbot」のインストール、の前準備(EPEL)

1)次に、Let’s Encryptの証明書設置プログラム「certbot」をインストールしますが、そのための準備を行います。プログラムのインストールを行う参照先に、EPELと呼ばれるリポジトリパッケージを追加します。

# cd /home/ec2-user
# wget -r –no-parent -A ‘epel-release-*.rpm’ http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/

2)終わりましたら、インストールをしましょう。

# rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm

3)で、以下のコマンドでEPELを有効にします。

# yum-config-manager –enable epel*

4)その結果、次のコマンドで、EPEL が有効であることを確認できます。

# yum repolist all

5.「certbot」のインストール

EPEL追加して有効化するの、結構長かったですね。。ようやくLet’s Encryptの証明書設置プログラム「certbot」のインストールです。以下のコマンドです!

# yum install -y certbot python2-certbot-apache

6.「certbot」の実行

やっとインストール終わりましたー!早速設定ディレクトリに移動して実行しましょう。どうなるでしょう。順に説明します。

# cd /etc/httpd/conf.d/

# certbot

で、エンター押した後にはこんな感じになります!

7.「certbot」によって発行された証明書の一覧

どのような証明書が発行されたのかを確認してみましょうか。

# cd /etc/letsencrypt/live/lecture-server.tk

# ls -la

・cert.pem …サーバ証明書

・chain.pem …中間CA証明書

・fullchain.pem …ルートCA証明書と中間CA証明書をくっつけたもの

・privkey.pem …秘密鍵

です。自動でここまでやってくれて、、。Let’s Encryptの志、本当に高いよ。。。

設定の再読み込み(この場合、SSL証明書類の読み込み)には、サービスの再起動が必要ですので、念のためやっておきましょう。

# systemctl restart httpd

8.SSL通信が出来るかどうか、確認!

ブラウザでアクセスしてみて確認しましょう!緊張の一瞬。どうでしょう!

http://lecture-server.tk/

成功です。やりましたね!!

まとめ

ということで、今回は「超簡単AWSサーバ構築法 …Let’s Encrypt SSL証明書 設置手順 (授業編)」をご紹介しました。

次回は、サーバによって提供されたSSL証明書を、ブラウザ側から確認をしてみたく思います。いろいろ裏側の動きが分かってくると面白いですよ。

もっと知りたいって方は気軽に何でもお尋ねくださいね。

※なお、わかりやすさを優先するためWebサーバ用のユーザ作成、設定等を省いています。本番のサーバを構築する際には、種々お気を付けください。

コメント

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