WordPressのHTTP通信が確認できたあと、実際の運用に向けてHTTPS化と独自ドメインの設定を進めるための手順についてめもしていきます。
Geminiに聞いた内容をもとにメモしていますので、ご承知ください。
HTTPS化と独自ドメインの設定は、サーバーの設定ファイル(ApacheのVirtual Host設定)とWordPress自体の設定の両方で行う必要があります。
HTTPS化と自己ドメイン設定のステップ
大まかな流れは以下の通りです。
- 独自ドメインの取得とDNS設定
- 有料SSL証明書の取得と準備
- ApacheのVirtual Host設定の変更
- HTTP (ポート80) から HTTPS (ポート443) へのリダイレクト設定
- SSL証明書のパス設定
- ドメイン名の設定
- WordPressのサイトアドレス変更
それぞれのステップを詳しく見ていきます。
1. 独自ドメインの取得とDNS設定
すでにドメインを取得済みの場合も想定されますが、念のため。
- ドメインレジストラでの取得: お名前.com、Godaddy、ムームードメインなどで希望のドメイン名を取得します。
- DNSレコードの設定: 取得したドメイン名が、WordPressが稼働しているサーバーのグローバルIPアドレスを指すようにDNSレコードを設定します。
- 通常、
Aレコード
でyourdomain.com
とwww.yourdomain.com
をサーバーのIPアドレスに設定します。 - DNS設定の反映には数時間から最大48時間かかることがあります。
- 通常、
2. 有料SSL証明書の取得と準備
SSL証明書プロバイダ(例:GMOグローバルサイン、サイバートラスト、DigiCert、GeoTrustなど)から有料のSSL証明書を取得します。
- CSR (Certificate Signing Request) の生成: 証明書を申請する際に、サーバー上でCSRファイルを生成します。Apacheの場合、
openssl
コマンドを使用します。Bash12sudo openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/private/yourdomain.com.key -out /etc/ssl/certs/yourdomain.com.csryourdomain.com
の部分は実際のドメイン名に置き換えてください。- このコマンドで、秘密鍵(
.key
)とCSRファイル(.csr
)が生成されます。秘密鍵はサーバー上に厳重に保管してください。
- 証明書の購入と発行: 生成したCSRファイルをSSL証明書プロバイダに提出して、証明書を購入・発行してもらいます。
- 証明書ファイルのダウンロード: 発行される証明書ファイルは通常、以下の形式で提供されます。
- サーバー証明書:
yourdomain.com.crt
または類似のファイル名(あなたのドメインに対する証明書) - 中間証明書 (Intermediate Certificate):
intermediate.crt
またはca_bundle.crt
などのファイル名(証明書の信頼性を保証するための中間的な証明書。複数ある場合もあります。)
- サーバー証明書:
- サーバーへの配置: これらの証明書ファイルをサーバー上の適切なディレクトリに配置します。一般的な場所は以下の通りです。
- サーバー証明書:
/etc/ssl/certs/yourdomain.com.crt
- 秘密鍵:
/etc/ssl/private/yourdomain.com.key
- 中間証明書:
/etc/ssl/certs/intermediate.crt
(またはバンドルされたファイル)
- サーバー証明書:
3. ApacheのVirtual Host設定の変更
Apacheの設定ファイルを編集し、HTTPS通信を有効にし、ドメインを設定します。
Apacheの設定ファイルは通常 /etc/apache2/sites-available/ ディレクトリにあります。
デフォルトのWordPress設定は /etc/apache2/sites-available/000-default.conf に適用されていることが多いですが、ベストプラクティスとしては、独自ドメイン用の新しいVirtual Hostファイルを作成することのがお勧め。
例: /etc/apache2/sites-available/yourdomain.com-le-ssl.conf
(Let’s Encryptでよく使われる命名ですが、任意の名前でOKです)
-
既存の
000-default.conf
のコピー(または新規作成):Bash123sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/yourdomain.com.confsudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/yourdomain.com-ssl.confdefault-ssl.conf
はHTTPS設定のテンプレートとして利用できます。
- yourdomain.com.conf (HTTP用) の編集:これは、HTTP (ポート80) へのアクセスをHTTPS (ポート443) へリダイレクトするための設定です。
Apache123456789101112<span class="hljs-section"><VirtualHost *<span class="hljs-number">:80</span>></span><span class="hljs-attribute">ServerAdmin</span> webmaster@yourdomain.com<span class="hljs-attribute"><span class="hljs-nomarkup">ServerName</span></span> yourdomain.com<span class="hljs-attribute">ServerAlias</span> www.yourdomain.com<span class="hljs-comment"># HTTPからHTTPSへのリダイレクト</span><span class="hljs-attribute">Redirect</span> permanent / https://yourdomain.com/<span class="hljs-attribute">ErrorLog</span> <span class="hljs-variable">${APACHE_LOG_DIR}</span>/error.log<span class="hljs-attribute">CustomLog</span> <span class="hljs-variable">${APACHE_LOG_DIR}</span>/access.log combined<span class="hljs-section"></VirtualHost></span>
ServerAdmin
,ServerName
,ServerAlias
は実際の情報に置き換えてください。
- yourdomain.com-ssl.conf (HTTPS用) の編集:これが主要なHTTPS設定ファイルになります。
Apache1234567891011121314151617181920212223242526272829303132333435<span class="hljs-section"><IfModule mod_ssl.c></span><span class="hljs-section"><VirtualHost *<span class="hljs-number">:443</span>></span><span class="hljs-attribute">ServerAdmin</span> webmaster@yourdomain.com<span class="hljs-attribute"><span class="hljs-nomarkup">ServerName</span></span> yourdomain.com<span class="hljs-attribute">ServerAlias</span> www.yourdomain.com<span class="hljs-attribute"><span class="hljs-nomarkup">DocumentRoot</span></span> /var/www/html<span class="hljs-section"><Directory /var/www/html></span><span class="hljs-attribute"><span class="hljs-nomarkup">Options</span></span> Indexes FollowSymLinks<span class="hljs-attribute">AllowOverride</span> <span class="hljs-literal">All</span><span class="hljs-attribute">Require</span> <span class="hljs-literal">all</span> granted<span class="hljs-section"></Directory></span><span class="hljs-attribute">ErrorLog</span> <span class="hljs-variable">${APACHE_LOG_DIR}</span>/error.log<span class="hljs-attribute">CustomLog</span> <span class="hljs-variable">${APACHE_LOG_DIR}</span>/access.log combined<span class="hljs-attribute">SSLEngine</span> <span class="hljs-literal">on</span><span class="hljs-comment"># SSL証明書、秘密鍵、中間証明書のパスを指定</span><span class="hljs-attribute">SSLCertificateFile</span> /etc/ssl/certs/yourdomain.com.crt<span class="hljs-attribute">SSLCertificateKeyFile</span> /etc/ssl/private/yourdomain.com.key<span class="hljs-attribute">SSLCertificateChainFile</span> /etc/ssl/certs/intermediate.crt # 中間証明書があれば指定。バンドルされている場合は不要なことも。<span class="hljs-comment"># 推奨されるセキュリティ設定 (TLSv1.2以上、安全な暗号スイートなど)</span><span class="hljs-attribute">SSLProtocol</span> <span class="hljs-literal">All</span> -SSLv<span class="hljs-number">2</span> -SSLv<span class="hljs-number">3</span><span class="hljs-attribute">SSLCipherSuite</span> EECDH+AESGCM:EDH+AESGCM:AES<span class="hljs-number">256</span>+EECDH:AES<span class="hljs-number">256</span>+EDH<span class="hljs-attribute">SSLHonorCipherOrder</span> <span class="hljs-literal">on</span><span class="hljs-comment"># HSTS (HTTP Strict Transport Security) ヘッダーの追加 (任意だが推奨)</span><span class="hljs-comment"># Max-Age はセキュリティ要件に応じて調整</span><span class="hljs-attribute"><span class="hljs-nomarkup">Header</span></span> always set Strict-Transport-Security <span class="hljs-string">"max-age=31536000; includeSubDomains; preload"</span><span class="hljs-section"></VirtualHost></span><span class="hljs-section"></IfModule></span>
ServerName
,ServerAlias
,ServerAdmin
は実際のドメイン名とメールアドレスに置き換えてください。SSLCertificateFile
,SSLCertificateKeyFile
,SSLCertificateChainFile
は、実際に証明書ファイルを配置したパスに合わせて変更してください。SSLCertificateChainFile
は、複数のCAバンドルを結合して一つにする場合もあります。その場合は、cat intermediate1.crt intermediate2.crt > /etc/ssl/certs/intermediate_bundle.crt
のように結合してパスを指定します。SSLProtocol
,SSLCipherSuite
,SSLHonorCipherOrder
はセキュリティのベストプラクティスに沿った設定です。最新の推奨設定は適宜確認してください。Header always set Strict-Transport-Security
は、一度HTTPSでアクセスしたクライアントに対して、次回以降強制的にHTTPSで接続させるためのヘッダーです。セキュリティ向上に寄与しますが、設定を誤るとサイトにアクセスできなくなる可能性があるため、慎重に設定してください。
- Apacheサイトの有効化と無効化:新しい設定ファイルを有効にし、不要なデフォルト設定を無効にします。
Bash12345sudo a2ensite yourdomain.com.confsudo a2ensite yourdomain.com-ssl.confsudo a2dissite 000-default.conf <span class="hljs-comment"># デフォルトHTTP設定を無効化</span><span class="hljs-comment"># sudo a2dissite default-ssl.conf # デフォルトHTTPS設定も無効化しても良い</span>
- mod_sslとmod_rewriteの有効化: これらのモジュールが有効になっていることを確認します。通常、Apacheのインストール時に有効になっていますが、もし無効であれば手動で有効にします。
Bash1234sudo a2enmod sslsudo a2enmod rewritesudo systemctl restart apache2 <span class="hljs-comment"># 有効化したら再起動が必要</span>
- mod_sslとmod_rewriteの有効化: これらのモジュールが有効になっていることを確認します。通常、Apacheのインストール時に有効になっていますが、もし無効であれば手動で有効にします。
- Apache設定のテストと再起動:設定ファイルの構文にエラーがないか確認し、Apacheを再起動して変更を適用します。
Bash123sudo apache2ctl configtestsudo systemctl restart apache2
Syntax OK
と表示されれば問題ありません。
4. WordPressのサイトアドレス変更
Apacheの設定が完了したら、WordPress自体に新しいURLを認識させる必要があります。
- WP-CLIを使用する方法 (推奨):最も確実で簡単な方法です。
Bash1234<span class="hljs-built_in">cd</span> /var/www/htmlsudo -u www-data /usr/<span class="hljs-built_in">local</span>/bin/wp option update home <span class="hljs-string">'https://yourdomain.com'</span> --allow-rootsudo -u www-data /usr/<span class="hljs-built_in">local</span>/bin/wp option update siteurl <span class="hljs-string">'https://yourdomain.com'</span> --allow-root
yourdomain.com
を実際のドメイン名に置き換えてください。sudo -u www-data
を使うことで、WordPressのファイル所有者であるwww-data
ユーザーとしてWP-CLIを実行し、パーミッションの問題を避けます。
- wp-config.php を編集する方法 (一時的または最終手段として):サイトにアクセスできなくなった場合など、緊急時の対応として利用できます。
/var/www/html/wp-config.php
を開き、ファイルの先頭(define('WP_DEBUG', false);
の後あたり)に以下の2行を追加します。PHP123define(<span class="hljs-string">'WP_HOME'</span>,<span class="hljs-string">'https://yourdomain.com'</span>);define(<span class="hljs-string">'WP_SITEURL'</span>,<span class="hljs-string">'https://yourdomain.com'</span>);- 注意: この方法は、WordPressのデータベース内の値を上書きします。WP-CLIでの設定が成功すれば、この行は通常は不要です。将来的にこれらの行を削除して、データベースの値を優先させることを検討してください。
- WordPress管理画面から変更する方法 (推奨しない):HTTPでアクセスできる状態で、WordPressの管理画面にログインし、「設定」>「一般」で「WordPress アドレス (URL)」と「サイトアドレス (URL)」を https://yourdomain.com に変更します。ただし、HTTPS化が不完全に終わった場合、設定を変更した途端に管理画面にアクセスできなくなるリスクがあるため、これはあまり推奨されません。WP-CLIが最も安全です。
最終確認
設定が完了したら、以下の点を確認してください。
- ブラウザで
http://yourdomain.com
にアクセスし、自動的にhttps://yourdomain.com
にリダイレクトされるか。 - ブラウザのアドレスバーに鍵マークが表示され、SSL証明書が正しく適用されているか。
- ウェブサイト内の画像やCSS、JavaScriptなどのリソースがHTTPSで読み込まれているか(ブラウザの開発者ツールで「Mixed Content」エラーが出ていないか確認)。
- WordPressの管理画面にログインし、問題なく操作できるか。
- WordPressのパーマリンク設定を保存し直して、URLルーティングが正しく機能するか確認します。
以上となります。参考までにメモ。