【Web制作】サイト移行時のHTTPS化とドメインの設定の流れ

この記事は約12分で読めます。

WordPressのHTTP通信が確認できたあと、実際の運用に向けてHTTPS化と独自ドメインの設定を進めるための手順についてめもしていきます。

Geminiに聞いた内容をもとにメモしていますので、ご承知ください。

HTTPS化と独自ドメインの設定は、サーバーの設定ファイル(ApacheのVirtual Host設定)とWordPress自体の設定の両方で行う必要があります。

HTTPS化と自己ドメイン設定のステップ

大まかな流れは以下の通りです。

  1. 独自ドメインの取得とDNS設定
  2. 有料SSL証明書の取得と準備
  3. ApacheのVirtual Host設定の変更
    • HTTP (ポート80) から HTTPS (ポート443) へのリダイレクト設定
    • SSL証明書のパス設定
    • ドメイン名の設定
  4. WordPressのサイトアドレス変更

それぞれのステップを詳しく見ていきます。


1. 独自ドメインの取得とDNS設定

すでにドメインを取得済みの場合も想定されますが、念のため。

  • ドメインレジストラでの取得: お名前.com、Godaddy、ムームードメインなどで希望のドメイン名を取得します。
  • DNSレコードの設定: 取得したドメイン名が、WordPressが稼働しているサーバーのグローバルIPアドレスを指すようにDNSレコードを設定します。
    • 通常、Aレコードyourdomain.comwww.yourdomain.com をサーバーのIPアドレスに設定します。
    • DNS設定の反映には数時間から最大48時間かかることがあります。

2. 有料SSL証明書の取得と準備

SSL証明書プロバイダ(例:GMOグローバルサイン、サイバートラスト、DigiCert、GeoTrustなど)から有料のSSL証明書を取得します。

  • CSR (Certificate Signing Request) の生成: 証明書を申請する際に、サーバー上でCSRファイルを生成します。Apacheの場合、opensslコマンドを使用します。
    Bash
    sudo openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/private/yourdomain.com.key -out /etc/ssl/certs/yourdomain.com.csr
    
    • yourdomain.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です)

  1. 既存の 000-default.conf のコピー(または新規作成):

    Bash
    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/yourdomain.com.conf
    sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/yourdomain.com-ssl.conf
    
    • default-ssl.conf はHTTPS設定のテンプレートとして利用できます。
  2. yourdomain.com.conf (HTTP用) の編集:これは、HTTP (ポート80) へのアクセスをHTTPS (ポート443) へリダイレクトするための設定です。
    Apache
    <VirtualHost *:80>
        ServerAdmin webmaster@yourdomain.com
        ServerName yourdomain.com
        ServerAlias www.yourdomain.com
    
        # HTTPからHTTPSへのリダイレクト
        Redirect permanent / https://yourdomain.com/
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
    • ServerAdmin, ServerName, ServerAlias は実際の情報に置き換えてください。
  3. yourdomain.com-ssl.conf (HTTPS用) の編集:これが主要なHTTPS設定ファイルになります。
    Apache
    <IfModule mod_ssl.c>
        <VirtualHost *:443>
            ServerAdmin webmaster@yourdomain.com
            ServerName yourdomain.com
            ServerAlias www.yourdomain.com
    
            DocumentRoot /var/www/html
    
            <Directory /var/www/html>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
            </Directory>
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    
            SSLEngine on
            # SSL証明書、秘密鍵、中間証明書のパスを指定
            SSLCertificateFile /etc/ssl/certs/yourdomain.com.crt
            SSLCertificateKeyFile /etc/ssl/private/yourdomain.com.key
            SSLCertificateChainFile /etc/ssl/certs/intermediate.crt # 中間証明書があれば指定。バンドルされている場合は不要なことも。
    
            # 推奨されるセキュリティ設定 (TLSv1.2以上、安全な暗号スイートなど)
            SSLProtocol All -SSLv2 -SSLv3
            SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
            SSLHonorCipherOrder on
    
            # HSTS (HTTP Strict Transport Security) ヘッダーの追加 (任意だが推奨)
            # Max-Age はセキュリティ要件に応じて調整
            Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    
        </VirtualHost>
    </IfModule>
    
    • 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で接続させるためのヘッダーです。セキュリティ向上に寄与しますが、設定を誤るとサイトにアクセスできなくなる可能性があるため、慎重に設定してください。
  4. Apacheサイトの有効化と無効化:新しい設定ファイルを有効にし、不要なデフォルト設定を無効にします。
    Bash
    sudo a2ensite yourdomain.com.conf
    sudo a2ensite yourdomain.com-ssl.conf
    sudo a2dissite 000-default.conf # デフォルトHTTP設定を無効化
    # sudo a2dissite default-ssl.conf # デフォルトHTTPS設定も無効化しても良い
    
    • mod_sslとmod_rewriteの有効化: これらのモジュールが有効になっていることを確認します。通常、Apacheのインストール時に有効になっていますが、もし無効であれば手動で有効にします。
      Bash
      sudo a2enmod ssl
      sudo a2enmod rewrite
      sudo systemctl restart apache2 # 有効化したら再起動が必要
      
  5. Apache設定のテストと再起動:設定ファイルの構文にエラーがないか確認し、Apacheを再起動して変更を適用します。
    Bash
    sudo apache2ctl configtest
    sudo systemctl restart apache2
    
    • Syntax OK と表示されれば問題ありません。

4. WordPressのサイトアドレス変更

Apacheの設定が完了したら、WordPress自体に新しいURLを認識させる必要があります。

  1. WP-CLIを使用する方法 (推奨):最も確実で簡単な方法です。
    Bash
    cd /var/www/html
    sudo -u www-data /usr/local/bin/wp option update home 'https://yourdomain.com' --allow-root
    sudo -u www-data /usr/local/bin/wp option update siteurl 'https://yourdomain.com' --allow-root
    
    • yourdomain.com を実際のドメイン名に置き換えてください。
    • sudo -u www-data を使うことで、WordPressのファイル所有者である www-data ユーザーとしてWP-CLIを実行し、パーミッションの問題を避けます。
  2. wp-config.php を編集する方法 (一時的または最終手段として):サイトにアクセスできなくなった場合など、緊急時の対応として利用できます。

    /var/www/html/wp-config.php を開き、ファイルの先頭(define('WP_DEBUG', false); の後あたり)に以下の2行を追加します。

    PHP
    define('WP_HOME','https://yourdomain.com');
    define('WP_SITEURL','https://yourdomain.com');
    
    • 注意: この方法は、WordPressのデータベース内の値を上書きします。WP-CLIでの設定が成功すれば、この行は通常は不要です。将来的にこれらの行を削除して、データベースの値を優先させることを検討してください。
  3. 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ルーティングが正しく機能するか確認します。

以上となります。参考までにメモ。

タイトルとURLをコピーしました