概要
本書ではGCPの無料枠(f1.micro)を利用して、CentOS8の立ち上げや独自ドメイン適応、Let's Encrypt
を利用したSSL証明書の発行(HTTPS対応)を実施します。
前提条件
- GCPのアカウントを作成していること。
- お名前.comなどで独自ドメインを取得していること。(.workドメインは1円(お名前.com)で購入できます)
- 本書ではPCはMacBookAir2019,ターミナルソフトはiTerm2を使用して検証・執筆しました。
- 本書で使用したCentOSのバージョンは下記の通りです。
$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
1. CentOSの立ち上げ
-
VMインスタンス作成画面が表示される。下記の内容を選択し、「変更」をクリックする。
- OS選択画面が表示される。下記の内容を入力し、「選択」をクリックする。
-
「HTTPトラフィックを許可する」「HTTPSトラフィックを許可する」にチェックを入れる。その後、設定内容に問題がなければ「作成」をクリックする。
-
静的アドレス予約画面が表示される。下記の内容を選択し、「予約」をクリックする。
2. CentOS8への接続
GCPでは公開鍵認証方式でVMインスタンスにログインします。秘密鍵や公開鍵は自端末で作成する必要があり、作成した公開鍵はGCPに登録します。その後、自端末で作成した秘密鍵を使用してSSH接続を実施します。
2-a. 秘密鍵/公開鍵の作成
-
iTerm2を立ち上げ、下記のコマンドを実行し認証鍵を作成する。またコマンド実行時にパスワードが求められるが、パスワードを入力せずにEnterをクリックする。
% sudo ssh-keygen -t rsa -f ~/.ssh/認証鍵の名前 -C ユーザー名
-
下記のコマンドを実行し、
~/.ssh
に認証鍵が作成されたことを確認する。% sudo ls -la ~/.ssh
2-b. GCPへ公開鍵の登録
-
下記のコマンドを実行し、公開鍵の内容を表示する。その後、ターミナルに表示された公開鍵の内容を全てコピーする。
% sudo cat ~/.ssh/公開鍵
-
公開鍵の更新後、iTerm2に戻る。下記のコマンドを実行し、VMインスタンスにログインする。
% sudo chmod 400 ~/.ssh/秘密鍵 % sudo ssh -i ~/.ssh/秘密鍵 ユーザー名@VMインスタンスの外部IPアドレス -p 22
-
VMインスタンスにログインできたことを確認するために、下記のコマンドを実行する。
$ uname -n $ whoami ```
3. Apatcheのインストール
-
下記のコマンドを実行し、Apacheをインストールする。
$ sudo dnf install httpd
-
下記のコマンドを実行し、Apatcheを起動する。
$ systemctl start httpd
-
下記のコマンドを実行し、Apacheの自動起動を設定する。
$ systemctl enable httpd
-
ブラウザを開き、
http://VMインスタンスのIPアドレス
に移動し、Apacheの初期画面が表示されていることを確認する。
4. 独自ドメインの設定
-
ブラウザで
http://サブドメイン名
に移動し、ドメインが浸透したことを確認する。サブドメインに移動できない場合は、ドメインが浸透するまで一定時間待機する。 -
下記のコマンドを実行し、ドメイン名からIPアドレスが調べられるか確認する。
$ sudo dnf install bind-utils $ host サブドメイン名
5. HTTPS対応設定
-
下記のコマンドを実行し、certbot-auto(Let's EncryptでSSL証明書を発行するプログラム)を実行するために必要なパッケージをインストールする。
$ sudo dnf module install python36 $ sudo dnf install gcc mod_ssl python3-virtualenv redhat-rpm-config augeas-libs libffi-devel openssl-devel
-
下記のコマンドを実行し、certbot-autoを取得する。
curl -O https://dl.eff.org/certbot-auto
-
下記のコマンドを実行し、取得したcertbot-autoを
/usr/local/bin
に移動する。$ sudo mv certbot-auto /usr/local/bin/certbot-auto
-
下記のコマンドを実行し、certbot-autoの権限を変更する。
$ sudo chown root /usr/local/bin/certbot-auto $ sudo chmod 0755 /usr/local/bin/certbot-auto
-
下記のコマンドを実行し、
/etc/httpd/conf/httpd.conf
にVirtualHostを末尾に追記する。$ sudo vi /etc/httpd/conf/httpd.conf NameVirtualHost *:80
ServerAdmin root@サブドメイン名
DocumentRoot /var/www/html
ServerName サブドメイン名
```
-
SSL証明書を発行するため、下記のコマンドを実行してApacheを停止する。
$ systemctl stop httpd
-
下記のコマンドを実行し、SSL証明書を発行する。コマンド実行後、対話式形式でメールアドレスやドメイン名などを入力するように求められるので、ターミナルに表示される説明文に従って入力する。
$ sudo /usr/local/bin/certbot-auto
-
certbot-autoコマンドが成功するとSSL証明書が発行される。ターミナルに表示されている発行された証明書ファイルの保存先を確認する。
$ sudo ls -la /etc/letsencrypt/live/サブドメイン名
-
下記のコマンドを実行し、SSL証明書を更新するコマンドが実行できるか確認する。
$ sudo /usr/local/bin/certbot-auto renew
-
SSL証明書を更新するコマンドが実行できることを確認後、下記のコマンドを実行してCronで自動更新するように設定する。
$ sudo crontab -e * 1 1 * * sudo /usr/local/bin/certbot-auto renew && sudo systemctl reload httpd
-
下記のコマンドを実行し、
/etc/httpd/conf.d/ssl.conf
に証明書ファイル場所を記載する。$ sudo vi /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/letsencrypt/live/サブドメイン名/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/サブドメイン名/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/サブドメイン名/chain.pem
-
下記のコマンドを実行し、Apacheを起動する。
$ sudo systemctl start httpd
-
ブラウザに
https://サブドメイン名
を入力し、Let's EncryptのSSL証明書が登録されていることを確認する。
最後に
GCPの無料枠を利用することでWEBサイトを開設することができます。またLet's Encryptの設定を実施することでHTTPS対応のWEBサイトを開設することができます。これによってHTTPS対応したホームページの運営やポートフォリオの作成などができます。