SSL(https)でのサイトアクセスが当たり前の時代になり(Googleの動向で)、SSL のサーバ証明書を設定する機会も増えました。
数年前までは、個人サイトにおいては格安の SSL サーバ証明書を取得するのが一般的でしたが、Let’s Encrypt や AWS の ACM(AWS Certificate Manager)の登場で無料化も浸透してきました。
ただ AWS の ACM は利用できるサービスが ELB や CroudFront などに限られるため、EC2 の Web サーバに直接設定することはできません。
これは証明書や秘密鍵の情報が ACM からは取得できないためです。
そこで、ELB を介さずに EC2 で SSL サイトを運営する場合は、Let’s Encrypt の SSL サーバ証明書を使うのが最適だと思っています。
ここでは、Let’s Encrypt によるサーバ証明書の取得について紹介します。
前提条件
前提条件として、http でサイトにアクセスができる状態にしておいてください。
以前、nginx で Web サーバを構築する方法を「AmazonLinuxでnginxを使ったWebサーバを構築する」で紹介しましたが、必要があればそちらを参照してください。

Let’s Encryptのインストール
Let’s Encrypt は certbot-auto というプログラムを使いますが、まずはこちらを取得します。
1 | $ curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto |
実行権限を変更します。
1 | $ chmod 700 /usr/bin/certbot-auto |
環境変数に PYTHON_INSTALL_LAYOUT があると弊害になるので、一旦 PYTHON_INSTALL_LAYOUT を削除しておきます。
1 2 | $ env | grep 'PYTHON_INSTALL_LAYOUT' PYTHON_INSTALL_LAYOUT=amzn |
1 | $ unset PYTHON_INSTALL_LAYOUT |
早速、certbot-auto コマンドで証明書の発行をしてみましょう。
メールアドレスは任意ですが、証明書の更新失敗による期限切れの通知などが届くので設定しておきましょう。
1 | $ certbot-auto certonly --debug --webroot -w [ドキュメントルートのパス] -d [ドメイン] --email [メールアドレス] |
初回は certbot-auto を実行するために必要な依存関係のパッケージのインストールが必要になるので、yum でのインストールを許可する必要があります。