#これは何?
ドメイン名でアクセスできるApache HTTPサーバをHTTPS化する方法の一つ、フリーの証明書を発行する「Let's Encrypt」を利用する方法が書かれています。ただし、まだApache HTTPサーバを構築していない場合は、こちらを参照してください。
クラウドでWebサーバを構築する
クラウドコンピューティングを利用してWebサーバを構築する方法の一つ、GoogleCloudPlatformを使う方法が書かれています。
#ドメインでアクセスできるApache HTTPサーバをHTTPS化する
手順は次の通り
- Let's Encryptのクライアントソフト「Certbot」をインストール
- Certbotを使ってLet's Encryptから証明書を受け取る
- ApacheでSSLに対応するための「mod_ssl」モジュールをインストール
- mod_sslでさっき受け取った証明書を使うよう設定する
- Apache HTTPサーバを再起動する
Certbotをインストール
例えば、CentOS7の場合は、次のコマンドでインストールできます。
$ sudo yum install epel-release
$ sudo yum install certbot python-certbot-apache
他の環境については、こちらを参照してください。
Certbot クライアントのインストール - Let's Encrypt 総合ポータル
Certbot クライアントの適切なインストール手順は、OS(ディストリビューション)によって異なります。使用している OS を選んでください。
Let's Encryptから証明書を受け取る
次のようなコマンドで、Apache HTTPサーバを停止することなく証明書を受け取ることができます。
$ sudo certbot certonly --webroot -w /var/www/html -d www.qiita.com
-
/var/www/html
の部分は、サーバのドキュメントルートなので、Apacheで設定されているパスに置き換えてください。 -
www.qiita.com
の部分は、サーバのアドレスに紐付けられた実際のドメインに置き換えてください。 - 途中でメールアドレスを入力したり、質問に答える部分があるかもしれないので、画面の指示に従ってください。
例:
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): xxxxx@qiita.com
(A)gree/(C)ancel: A
(Y)es/(N)o: N
mod_sslをインストール
次のコマンドで、ApacheでSSL証明書を利用するための、「mod_ssl」モジュールをインストールできます。
$ sudo yum install mod_ssl
...
Is this ok [y/d/N]: y
mod_sslで証明書を使うよう設定する
例えば、次のコマンドで「viエディタ」を起動し、設定ファイルを書き換えます。
$ sudo vi /etc/httpd/conf.d/ssl.conf
書き換える箇所は次の通り
SSLCertificateFileで始まる行を探し、次のように書き換えます。www.qiita.com
を実際のドメインに書き換えてください。
SSLCertificateFile /etc/letsencrypt/live/www.qiita.com/cert.pem
SSLCertificateKeyFileで始まる行を探し、次のように書き換えます。
SSLCertificateKeyFile /etc/letsencrypt/live/www.qiita.com/privkey.pem
SSLCertificateChainFileで始まる行を探し、次のように書き換えます。
SSLCertificateChainFile /etc/letsencrypt/live/www.qiita.com/chain.pem
Apache HTTPサーバを再起動する
例えば、CentOS7の「Apache httpd」の場合は、次のコマンドで再起動できます。
$ sudo systemctl reload httpd.service
Let's Encryptから受け取った証明書を自動更新する
証明書には有効期限がありますので、無効になる前に更新する必要があります。証明書の更新は、次のコマンドでできます。
$ sudo certbot renew --post-hook "sudo systemctl reload httpd.service"
--post-hook
オプションで、証明書が更新された直後に再起動するようにします。このコマンドをCronに登録すれば、自動で定期的に証明書を更新できます。
Cronに登録する
まずは、cronが動作中かどうか確認します。
$ systemctl statuc crond
例えば、次のように、Viエディタで/etc/cron.d/certbot
ファイルを新規作成すると、登録できます。
sudo vi /etc/cron.d/certbot
# letsencrypt renew
0 4 * * 3 root certbot renew --post-hook "systemctl reload httpd.service"
余談
Let's Encryptを利用すれば、無料でSSL証明書を発行してもらうことがます。したがって、ドメインを所有していれば、自分のWebサイトを無料でHTTPS化することができます。