WordPress ローカルネットワークでの開発環境構築 ~ Ubuntu 20.04.1

Apache2 を SSL 化

SSL 関連のソフトウェアをインストール

  • 証明書データベースを管理するための certutil を備えたネットワークセキュリティサービスツールをインストールします。
sudo apt install libnss3-tools
  • linuxbrew をインストールします。
sudo apt install build-essential curl file git
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  • パスを通します。
nano .profile
# for linux brew
if [ -d "/home/linuxbrew/.linuxbrew/bin" ] ; then
    PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"
fi
  • ログインし直し、brew のテストをします。
brew doctor
  • mkceret を brew でインストールします。
    • /home/linuxbrew/.linuxbrew/bin/mkceret にインストールされます。
brew install mkcert
  • Firefox を利用する場合にインストールします。
brew install nss

証明書と鍵をインストール

mkcert -install
mkcert -CAROOT /* 証明書の場所を表示 */
  • CA 証明書をインストールします。
    • 証明書は、ブラウザにインポートするファイル rootCA.pem です。
    • ブラウザへ rootCA.pem をインポートします。
      • Firefox
        • オプション→プライバシーとセキュリティ→証明書を表示→認証局証明書→インポート
      • Chrome
        • 設定→プライバシーとセキュリティ→セキュリティ→証明書の管理→信頼されたルート証明機関→インポート
  • ローカルホストと、riverforest.test 用の証明書と鍵を作成します。
    • 証明書 localhost+3.pem
    • 鍵 localhost+3-key.pem
mkcert localhost *.localhost riverforest.test *.riverforest.test
  • certs というディレクトリを作成し、そのディレクトリ以下にそれぞれのサイト(以下では、riverforest.test, shop.riverforest.test)用の証明書と鍵を作成します。
/* riverforest.test用 */
mkdir certs
mkcert -cert-file ./certs/riverforest.test.crt.pem -key-file ./certs/riverforest.test.key.pem riverforest.test

/* shop.riverforest.test用 */
mkcert -cert-file ./certs/shop.riverforest.test.crt.pem -key-file ./certs/shop.riverforest.test.key.pem shop.riverforest.test

※証明書は、2年2か月の期限なので、期限が切れたら上記コマンドを実行し証明書を再作成し、apache2 を再起動します。

Apache2 の設定

Apache2 の設定(仮想ホスト)(SSL)

  • sites-available ディレクトリにあるファイルを編集します。
cd /etc/apache2/sites-available
sudo cp default-ssl.conf riverforest.test-ssl.conf
sudo nano /etc/apache2/sites-available/riverforest.test-ssl.conf
<IfModule mod_ssl.c>
	/* デフォルトサイト用 */
	<VirtualHost _default_:443>
		ServerName riverforest.test
		ServerAdmin katsushi@riverforest.test
		DocumentRoot /home/katsushi/www/riverforest.test
		<Directory "/home/katsushi/www/riverforest.test">
			Options FollowSymLinks
			AllowOverride All
			Require all granted
		</Directory>
		ErrorLog ${APACHE_LOG_DIR}/riverforest.test.error.log
		CustomLog ${APACHE_LOG_DIR}/riverforest.test.access.log combined
		SSLEngine on
		SSLCertificateFile      /home/katsushi/certs/riverforest.test.crt.pem
		SSLCertificateKeyFile /home/katsushi/certs/riverforest.test.key.pem
		<FilesMatch "\.(cgi|shtml|phtml|php)$">
			SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
			SSLOptions +StdEnvVars
		</Directory>
	</VirtualHost>
	/* 英語ショップ用 */
	<VirtualHost _default_:443>
		ServerName shop.riverforest.test
		ServerAdmin katsushi@riverforest.test
		DocumentRoot /home/katsushi/www/shop.riverforest.test
		<Directory "/home/katsushi/www/shop.riverforest.test">
			Options FollowSymLinks
			AllowOverride All
			Require all granted
		</Directory>
		ErrorLog ${APACHE_LOG_DIR}/riverforest.test.error.log
		CustomLog ${APACHE_LOG_DIR}/riverforest.test.access.log combined
		SSLEngine on
		SSLCertificateFile    /home/katsushi/certs/shop.riverforest.test.crt.pem
		SSLCertificateKeyFile /home/katsushi/certs/shop.riverforest.test.key.pem
		<FilesMatch "\.(cgi|shtml|phtml|php)$">
			SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
			SSLOptions +StdEnvVars
		</Directory>
        </VirtualHost>
</IfModule>
  • Apache2 の SSL を有効化します。
sudo a2enmod ssl
  • 有効なサービスを確認し、https での接続を解放し、設定を反映させます。
sudo firewall-cmd --list-service
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
  • サーバー名とポートの記述を 80 から 443 に変更します。
sudo nano /etc/apache2/apache2.conf
ServerName riverforest.test:443
  • 以前の設定を無効化し、新しい設定を有効化し、再起動します。
sudo a2dissite riverforest.test.conf /* http 80番の設定を無効化 */
sudo a2dissite default-ssl.conf /* ssl の以前の設定を無効化 */
sudo a2ensite riverforest.test-ssl.conf /* ssl の新しい設定を有効化 */
sudo systemctl restart apache2 /* 再起動 */
  • Apache2 が落ちた場合の対処療法
sudo su /* スーパーユーザーになる */
crontab -e
/* 1分おきに apache2 を監視してプロセスが無ければ再起動 */
*/1 * * * * ps ax |grep -v grep | grep -q apache2 || /usr/sbin/apachectl restart
1 2 3 4 5 6 7 8


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください