AWSでドメイン取得/設定からSSL設定/自動更新までの手順

ドメイン取得からSSL設定まで

Webサービス構築する時には大事な作業です。

▼ ここで解説する大まかな流れ

  • AWS内からドメイン取得
  • そのドメインをEC2インスタンスに設定
  • LetsEncryptoでSSL対応させる
  • ついでにSSLの自動更新もしておく

▼ それから前回の記事

一歩ずつ手順を踏んでいけば難しくありません。

まずはroute53から新規ドメイン名を取得する

AWSコンソールから[全てのサービス]を開きます

そこから route53 を探してください

▼ ネットワーキングとコンテンツ配信

▼ 取得したいドメインが利用可能か調べる

利用可能ならそのまま取得してください。

ドメイン取得は画面の流れに沿ってやるだけだから解説しません。料金に関してもクレカ登録してれば自動で引き落としてくれます。

 

料金は .com なら1年間で12ドル(=約1360円)

▼ ドメイン注文完了!

あとは支払い完了を待つだけ。その間、ドメインのステータスは「ドメインの登録 が進行中」になってます。有効になるまで待ってください

ちなみに支払い方法ですが・・・正規のクレジットカード以外にもVANDLEカードとかも使えますね。(この記事でも紹介したアレ : https://pisuke-code.com/vandle-card-is-savior-of-money/

それから1回以上クレカ払いしたら銀行振込も利用可能です。クレカ切れ・停止などのリスクが怖い人向けのオプションもあるのが嬉しい。閑話休題

Elastic IPアドレスをインスタンスに追加

続いてElastic IPアドレスの設定です。

ECインスタンスのIPアドレスは変わります。

だからそれをElasticIPで固定しないとダメです。

その設定はAWSコンソールkから [EC] にアクセス、そのあと [ネットワーク&セキュリティ] => [Elastic IP]というのを開いてください。

▼ そして [Elastci IPアドレスを割り当てる]をクリック

▼ 設定は特に変更する必要はなし

そのまま [割り当て] を押して大丈夫です。

 

そしたらElasticIpアドレス一覧に戻ります。

そして追加アドレスを選択して関連付けをします。

▼ つまりこのような操作をすればOK

▼ [インスタンス]から対象インスタンスを選ぶ

上画像のように [インスタンス] にElastic IPを割り当てたいEC2インスタンスを選択してください。設定したら [関連付ける]をクリックするだけです。

これで 52.199.xxx.xxx のようなElastic IPアドレスでアクセスできるようになりました。これは割り当てを解放しない限りはずっと不変です。

Route53から追加ドメインのDNSレコードを設定する

今度はRoute53からDNSレコードの設定です。

▼ Route53 => ホストゾーンを選択

そこから作成ドメインを選んでください。

そしたら [レコードを作成] を押します。

▼ このように新規DNSレコードを作る

▼ DNSレコード設定のポイント

  • レコード名
    ここには www を設定しておく。一般的にはドメインのホスト名と呼ばれるもの。AWSでは基本的にwwwありのURLを使う(wwwなしにする方法もあるが複雑で設定するメリットも薄い)
  • 先ほど作成したElasticIPアドレスを入力。これでドメイン名とElasticIPアドレスが関連付けられ、取得ドメインでのアクセスが可能になる

追記 : wwwなしについても同様にAレコードを作ってください。これがないと hogehoge.com のようにwwwなしURLへのアクセスができません

これで大事なドメイン設定はすべて完了です!

補足.SSH接続情報が変わることに注意!

DNSレコード追加で1つ気を付けるべきこと

それはSSH接続ホスト名が変わることですね。

設定前はデフォルトのホスト名を使ってました。

▼ [インスタンス] => [接続] => [SSHクライアント]

ご使用のインスタンスの パブリック DNS を使用してインスタンスに接続: ec2-52-199-xxx-xxx.ap-northeast-1.compute.amazonaws.com

このように書いてあるんですが、DNSレコード設定するとホスト名に [ec2-52-199-xxx-xxx.ap-northeast-1.compute.amazonaws.com] みたいな形式は使えなくなります。

代わりに先ほど設定したElasticIPアドレスをホストに指定してください。ユーザー名(ec2-user)・パスワード(pemファイル)に関しては変更ありません

Lets encryptでSSL化(https対応)する

ここからはSSH接続してターミナルでの作業

まずはcertbotをインストールします。

※ ただしcertbot-autoは使えなくなった模様

まずは mod_ssl をインストールして有効化

▼ こちらのコマンド

mod_sslはApacheをSSLに対応させるモジュール

これがないと話にならないので入れておきます。

certbotをsnapd経由でインストールする

▼ AmazonLinux2向けカスタムリポジトリを入れる

▼ snapdをインストールする

snapdはパッケージ管理ツールのこと。

OS非依存のクロスプラットフォームみたいです。

▼ 自動起動の設定とシンボリックリンク

▼ snapdを有効化する

▼ ようやくcertbotをインストール

▼ シンボリックリンクを張っておく

 

ここからが実際のSSL化作業となります。
次のコマンドを打つと色々聞かれるので答えます

▼ Certbotを実行

▼ 色々聞かれるので正確に答える

今回は www.hogehoge.com のようなwwwありだけをHTTPS対応させています。なので (Enter 'c' to cancel): のあとに 2 を指定しています。

AWSでは設定の問題もあるのかwwwなしに対してSSL化させる方法が分かりませんでした。もし方法・代替案が分かったら追記します。

もしcertbotでこんなエラーが出たなら

▼ こんなエラーに遭遇

この場合はhttps.confを編集します。

▼ httpd.confをvimなどで編集

▼ こういった内容を追加

※ [yourdomain]は各自環境のドメインで置き換え

▼ それからvhosts.confも編集(or 新規作成)

▼ こちらは次の内容を追加する

※ [yourdomain]は各自環境のドメインで置き換え

htaccessがドキュメントルートから使えるようにする

少し蛇足だけど .htaccess について

デフォルトだと無効化されてるみたいです。

もし .htaccess を使うなら、次の設定が必要

▼ httpd.confを開いて編集

▼ AllowOverride All に変える

▼ さらに参考になるかもしれない記事

これでhtaccess編集も対応OK

次回記事予告 : PHP+MySQLでWebアプリ環境構築

ここまでがドメイン設定・SSL化の手順です。

大変だったのはSSL設定などのサーバー設定でした

▼ そして次回は次の内容を記事を書こうと思います。

  • 最新のPHP8をインストール/設定
  • 最新のMySQL80のインストール/設定
  • Webアプリ環境の構築

▼ その次回の記事

以上、AWSでのドメイン設定でした。ではまた