Conoha のコントールパネルにログインし、「DNS」画面を開く。
「+ドメイン」をクリックし、契約しているドメイン名を登録する。
登録後、下記のレコードを登録する。(※デフォルトで登録されているものはそのままにしておく)
タイプ | 名称 | TTL | 値 |
---|---|---|---|
A(通常) | @ | 3600 | <グローバルIPアドレス> |
A(通常) | www | 3600 | <グローバルIPアドレス> |
インターネットの繋がっているサーバから下記のコマンドを実行して、正引きできるかを確認する。
$ host <ホスト名> <ホスト名> has address <IPアドレス>
SSL通信用モジュールである「mod_ssl」のインストールを行う。
$ sudo yum install mod_ssl
mod_ssl がApache のモジュールとして登録されたかどうかを下記コマンドで確認する。
$ sudo httpd -M | grep ssl ssl_module (shared)
$ sudo systemctl restart httpd
サーバ証明書発行について、「Let's Encrypt」を利用する。
利用するために「certbot」という名前のパッケージをインストールする。
$ sudo yum install epel-release (EPELレポジトリをインストールしていれば不要) $ sudo yum list installed | grep epel $ sudo yum install certbot python2-certbot-apache
certbotがインストールされているかを下記コマンドで確認する。
$ which certbot /usr/bin/certbot
httpd に設定したドキュメントルート及び登録したドメイン名を使って、証明書を発行する。
$ certbot certonly --webroot -w <ドキュメントルート> -d <ドメイン名>
コマンド実行すると、対話型のメッセージが表示されるので回答する。
回答後、「Congratulations!・・・」と表示されれば証明書の発行は完了
表示されたメッセージに証明書の保存場所が記載されている。(「/etc/letsencrypt/live/<ドメイン名>」)
ファイルは4種類発行される。
HTTPS通信の設定を変更するために、「ssl.conf」ファイルを行う。
$ sudo cp /etc/httpd/conf.d/ssl.conf{,org} $ sudo vi /etc/httpd/conf.d/ssl.conf 下記を変更する SSLCertificateFile /etc/pki/tls/certs/localhost.crt ↓ SSLCertificateFile <cert.pem の絶対パス> SSLCertificateKeyFile /etc/pki/tls/private/localhost.key ↓ SSLCertificateKeyFile <privkey.pem の絶対パス> SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt ↓ SSLCertificateChainFile <chain.pem の絶対パス>
編集後、下記コマンドを実行して設定ファイルが正常か確認する。
$ sudo httpd -t Syntax OK
その後、httpdサービスを再起動する。
$ sudo systemctl restart httpd
ブラウザにWebサーバのURLを入力してアクセスする。
Chrome の場合、URL欄の横に鍵マークが表示されていることを確認する。
発行した証明書は有効期限が90日と決まっている。そのため、1か月に1回程度、証明書を更新すればよい。
更新できるかどうかは、下記コマンドでシミュレーションできる。(「–dry-run」がオプション)
$ sudo certbot renew --dry-run
定期的に実行できるように、crontab コマンドに追記する。
更新した場合は、httpdサービスを再起動する必要があるため、「–deploy-hook」オプションを指定する。
$ sudo crontab -e 毎月1日と15日にコマンドを実行する場合の設定 00 3 1 * * certbot renew -q --deploy-hook "systemctl restart httpd" 00 3 15 * * certbot renew -q --deploy-hook "systemctl restart httpd"
設定後、下記のコマンドで上記の設定が登録できているか確認する。
$ sudo crontab -l