さくら VPS Ubuntu Web サービス
Web サイトを SSL 化する
ここまでで、仮想ホストの設定ができました。
引き続き、この仮想ホストを SSL 化していきます。
この設定ができると、Web URL 設定が http:// ではなく、https:// でのアクセスになります。
http://70vps.net/test1.html
↓
https://70vps.net/test1.html
SSL 化するとインターネット上でのデータの通信を暗号化することで秘匿性が高まり、
盗聴や改ざんを防ぐことができます。
手っとり早く SSL 化する
Ubuntu の場合は、Apache をインスト-ルすると mod_ssl もインスト-ルされていますので、
a2enmod コマンドで有効化すれば手っとり早く SSL 化することができます。
/etc/ssl/private
に最初から SSL 証明書が用意されているからです。
・・・ の言葉にだまされて、
シリアルコンソ-ル(β版)を開き、
yamada@********:~$ sudo a2enmod ssl
$ sudo a2ensite default-ssl
$ sudo systemctl restart apache2
とすれば、SSL 化されると思っていました。
でも、これは、Ubuntu 14.04 までのことだったようです。
Ubuntu 16.04 以降は SSL 証明書が用意されていないようです。
よって、SSL 証明書を作成するなり、購入するなりしないといけないようです。
SSL 証明書の取得準備
Certbot は無料で SSL 証明書を発行してくれます。
Ubuntu18.04 で Certbot を使った SSL 証明書の発行と更新
を見ると参考になると思います。
ただ、Certbot で正しく処理するには、・・・・
・・・ ServerAlias の設定も行いましょう。
の部分 (000-default.conf の変更も含め)
の説明は私にもよく分かりませんでした。
要するに、仮想ホストの設定ができてから SSL 化してねと言うことのようです。
従来は、SSL 証明書の発行は面倒な手続きが多く、時間のかかる作業でした。
しかし今では Certbot で Let’s Encrypt 認証局の SSL 証明書発行から
Apache の設定まで自動で行ってくれます。
2023/5/27日追記
SSL 証明書の取得は Ubuntu20.04 以降もっと簡単になっています。
詳細は
Ubuntu20.04 で Certbot を使った SSL 証明書の発行と更新
を見てください。
Certbot インストール
それでは Certbot をインストールします。
まず最初にする事は Certbot のリポジトリを追加するための準備です。
- add-apt-repository コマンドを使えるようにする
software-properties-common をインスト-ルします。
シリアルコンソ-ル(β版)を開き、
yamada@********:~$ sudo apt install software-properties-common
- Certbot のリボジトリ追加
最新版がインスト-ルできるように Certbot のリポジトリを追加します。 $ sudo add-apt-repository ppa:certbot/certbot
途中 Press [ENTER] to continue
と聞かれますのです素直に Enterキ- を押します。 - インデックス情報更新
新しくリボジトリを追加したので、インデックス情報を更新します。
$ sudo apt update
- python-certbot-apache パッケ-ジインスト-ル
やっと Certbot をインストールできるようになりました。
$ sudo apt install python-certbot-apache
としてインスト-ル開始です。
やっと cerbot コマンドを実行して証明書を取得しセットアップできるところまできました。
証明書取得とセットアップ
証明書を取得しセットアップするために
cerbot コマンドを実行します。
まずは Apache2 を停止します。
停止しないと証明書が取得できないと言う人と、
そんなことは無視する人もいます。
どうも昔は、停止する事が作法だったようです。
でも、断言はできませんが、私はたまたま止め忘れたにもかかわらず取得できてしまった気がします。
念のため停止しましょう。
$ sudo systemctl stop apache2
cerbot コマンド実行
$ sudo certbot --apache
を実行し証明書を取得します。
途中質問をされますので答えていきます。
- メールアドレス
Enter email address
自分が使用しているメールアドレスを入力します。
******@yahoo.co.jp - 規約の同意
You must agree in order to register with the ACME server
サ-ビス規約に同意するか聞かれます。
「A」を入力して同意します。
ほかに選択肢はありません。 - パ-トナ-団体へのメ-ルアドレスの提供
Would you be willing to share your email address with the Electronic Frontier Foundation
同意するなら「A」を入力、非同意なら「N」を入力します。
私は「N」にしてしまいました。
無料なので、メ-ルアドレスぐらい使ってもらってもよいのかもしれません。 - SSL化するドメイン名
Which names would you like to activate HTTPS for?
Apache の設定ファイルに書かれているドメイン名が
1: 70vps.net
のように表示されているはずです。
普通は一つしか表示されていないはずです。
「1」を入力します。
複数表示される場合は希望するドメインの番号を入力します。
ドメイン名が表示されない場合はその名前を入力します。
例) 70vps.net - http を https にリダイレクトするか
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
Web プラウザから http://~ でアクセスがあったとき、そのまま HTTP でアクセスさせるなら「1」を 強制的に HTTPS にリダイレクトさせるなら「2」を入力します。
私はリダイレクト「2」を選択しました。
最後の方に
Congratulations! You have successfully enabled https://70vps.net
と表示されれば完了です。
設定ファイルは
/etc/apache2/sites-available/70vps.net-le-ssl.conf
が自動作成されました。
yamada@********:~$
cat /etc/apache2/sites-available/70vps.net-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost 1**.1**.1**.1**:443>
ServerName 70vps.net
ServerAdmin webmaster@70vps.net
DocumentRoot /home/yamada/public_html
ErrorLog /var/log/apache2/70vps.net.error.log
CustomLog /var/log/apache2/70vps.net.access.log combined
LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/70vps.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/70vps.net/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
証明書は
/etc/letsencrypt/live/70vps.net/
LREADME
Lcert.pem
Lfullchain.pem ●証明書
Lprivkey.pem ●保証秘密鍵
に配置されました。
リダイレクトを選択した場合は、
/etc/apache2/sites-available/70vps.net.conf
に以下の内容が追加されています。
RewriteEngine on
RewriteCond %{SERVER_NAME} =70vps.net
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
これで、Web サイトの SSL 化についての説明は終わりです。
引き続き、HTTPS によるアクセス最終準備をします。