2026年10月1日

2026年10月1日

WordPressのWildcard(ワイルドカード)SSL証明書を設定

はじめに

ワイルドカードSSL証明書は、単一のドメインと無数のサブドメインに対して共有されたセキュア接続を提供する重要なツールです。WordPressサイトで複数のサブドメインを使用している場合、各サブドメインごとに個別のSSL証明書を取得し管理するのは非効率的であり、コストも高くなります。ワイルドカードSSLはその問題を解決し、一元的なセキュリティ環境を構築します。

症状・背景

この記事が必要になる主な場面:

  • WordPressサイトで複数のサブドメインを使用している
  • サイト管理者が効率的にSSL証明書を管理したい
  • 信頼性とセキュリティの向上を図りたい

手順・設定方法

ステップ1: 証明書の取得

# Let's EncryptからワイルドカードSSL証明書を取得します。
certbot certonly --manual --preferred-challenges dns-01 -d '*.example.com'

ステップ2: Apacheでの設定変更

# ディレクトリに移動して、Apacheの設定ファイルを編集します。
cd /etc/apache2/sites-available/
nano wp-wildcard.conf

# 設定ファイルに以下のような内容を追加します。
<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        DocumentRoot /var/www/html/example.com
        ServerName example.com

        # ワイルドカードの証明書を指定します。
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        
        <Directory "/var/www/html/example.com">
            Options FollowSymLinks
            AllowOverride All
        </Directory>

        # ワイルドカードのサブドメインもカバーするため、以下を追加します。
        UseCanonicalName Off
        VirtualDocumentRoot /var/www/html/%-2+/public_html

        ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
        CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
    </VirtualHost>
</IfModule>

# 設定を有効化します。
a2ensite wp-wildcard.conf
systemctl reload apache2

ステップ3: Nginxでの設定変更

# ディレクトリに移動して、Nginxの設定ファイルを編集します。
cd /etc/nginx/sites-available/
nano wp-wildcard

# 設定ファイルに以下のような内容を追加します。
server {
    listen 80;
    server_name example.com www.example.com *.example.com;

    # リダイレクトするための設定
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com *.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    root /var/www/html/$host/public_html/;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

# 設定を有効化します。
ln -s /etc/nginx/sites-available/wp-wildcard /etc/nginx/sites-enabled
nginx -t
systemctl reload nginx

ステップ4: セキュリティと監視の設定

# ワイルドカードSSLを使用する際にセキュリティチェックを実施します。
openssl s_client -connect example.com:443 | openssl x509 -noout -text

注意事項

  • サーバーにApacheやNginxのバージョンがインストールされていることを確認してください。
  • 証明書ファイルへのアクセス権限を適切に設定します。例えば、chown -R www-data:www-data /etc/letsencrypt/live/example.com/ で所有者を変更できます。
  • WordPressのwp-config.phpファイル内でWP_HOMEとWP_SITEURLがHTTPSを使用していることを確認してください。

まとめ

1. ワイルドカードSSL証明書の取得: Let's EncryptからワイルドカードSSL証明書を取得します。

2. Apache/Nginx設定変更: 証明書をサーバーにインストールし、ApacheまたはNginxの設定ファイルを編集します。

3. サブドメインへの適用: ワイルドカードSSLは任意のサブドメインに対して自動的に有効になります。

4. セキュリティチェック: 設定後はセキュリティチェックを行い、証明書が適切に機能していることを確認します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲