Contents
Overview
Apache で TLS を有効化します。
前提条件
- こちらを参考に Apache をインストール済みであること。
/etc/apache2/sites-available/default-ssl.conf
デフォルト値
デフォルト値は下記の通りです。
myadmin@ubuntu:~$ grep -v -e '^\s*#' -e '^\s*$' /etc/apache2/sites-available/default-ssl.conf | expand | tr -s [:space:] | sed 's/^\s/ /g'
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
設定値
設定値は下記の通りです。自己署名証明書に関してはこちらを参照して下さい。有償の証明書に関してはこちらを参照して下さい。
myadmin@ubuntu:~$ sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.orig
myadmin@ubuntu:~$ sudo tee /etc/apache2/sites-available/default-ssl.conf <<"EOF"
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@si1230.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/my-ssl/certs/si1230.com.crt
SSLCertificateKeyFile /etc/my-ssl/private/si1230.com.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
EOF
設定の有効化
TLS を有効化します。Ubuntu の Apache は a2 から始まるコマンド (a2disconf, a2dismod, a2dissite, a2enconf, a2enmod, a2ensite, a2query) が用意されています。これらは /etc/apache2 ディレクトリに対応しており、例えば site- には sites-available と sites-enabled ディレクトリがあります。available には設定ファイルの実体があり、a2en から始まるコマンドを実行すると enabled にシンボリックリンクが作成され、Apache の起動時に読み込まれるようになります。
この設定手法は Ansible 等の自動化ツールでは扱いづらいのですが、a2 コマンドはシンボリックリンクを作成しているだけですので、a2 コマンド実行後に作成されたシンボリックリンクを確認して Ansible で同じように作成しても良いでしょう。
myadmin@ubuntu:~$ sudo a2ensite default-ssl
myadmin@ubuntu:~$ sudo a2enmod ssl
設定を有効化します。
myadmin@ubuntu:~$ sudo systemctl restart apache2.service && systemctl status apache2.service
正常性確認
下記のテスト用 HTML を作成します。ブラウザから Web サーバーにアクセス ( https:// ) して意図したレスポンスがあることを確認します。
myadmin@ubuntu:~$ sudo tee /var/www/html/index.html <<"EOF"
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ubuntu apache test</title>
</head>
<body>
<h1>ubuntu apache test</h1>
<p>ubuntu apache test</p>
</body>
</html>
EOF
テスト用 HTML を削除します。
myadmin@ubuntu:~$ sudo rm /var/www/html/index.html
Ubuntu 22.04 Apache Web サーバー構築 TLS 有効化