2026年6月20日

2026年6月20日

WordPressのSNI(Server Name Indication)エラー

はじめに

SNI(Server Name Indication)は、HTTPS接続で複数のサイトを同じIPアドレスでホストする際に必要な技術です。しかし、この設定がうまくいかないと、WordPressサイト上で「SNIエラー」という不明なエラーメッセージが表示されることがあります。

症状・背景

  • ブラウザにアクセスすると「エラー: このサイトへの接続は既定のSSL/TLS設定では安全ではありません」などのメッセージが表示される
  • WordPressダッシュボードでログインできなくなる
  • サイト全体または特定のページだけが見えない(白い画面)

手順・設定方法

ステップ1: SNI対応のSSL証明書を取得する

# WordPressサイトで使用するドメインを確認します。
$ sudo openssl s_client -connect example.com:443 -servername example.com

# 上記コマンドが成功した場合、SNI対応の証明書が既にインストールされています。もし失敗した場合は以下のようにしてSSL証明書を取得します。
$ sudo certbot --apache -d example.com

ステップ2: ApacheでSNIに対応する設定を行う

# まず、Apacheの設定ファイル(通常は /etc/apache2/sites-available/000-default.conf)を開きます。
$ sudo nano /etc/apache2/sites-available/000-default.conf

# 設定ファイル内に以下のようなVirtualHostセクションを追加します。
<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html/example.com/public_html
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>

# Apacheを再起動して変更を反映させます。
$ sudo systemctl restart apache2

ステップ3: NginxでSNIに対応する設定を行う

# まず、Nginxのサーバーブロックファイルを開きます。通常は /etc/nginx/sites-available/example.com です。
$ sudo nano /etc/nginx/sites-available/example.com

# ファイル内に以下の内容を追加します。
server {
    listen 443 ssl;
    server_name example.com;

    root /var/www/html/example.com/public_html;
    index index.php index.html index.htm;

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

# Nginxを再起動して設定を反映させます。
$ sudo systemctl restart nginx

ステップ4: SSL/TLSの脆弱性スキャンを行う

# まず、SSL LabsのSSL Server Test(https://www.ssllabs.com/ssltest)にドメイン名を入力し、セキュリティとパフォーマンスの詳細な診断を行います。
$ sudo curl -k https://api.ssllabs.com/api/v3/analyze?host=example.com&startNew=true

注意事項

  • SSL証明書が期限切れになっていないか確認してください。必要に応じて更新します。
  • SNI非対応の古いブラウザやOSでは、SNIエラーが発生する可能性があります。それらを使用しているユーザーには警告を出して代替方法を提供することをお勧めします。
  • ログファイル(通常は /var/log/apache2/error.log など)を定期的に確認し、SSL/TLS関連のエラーメッセージがないかチェックしてください。

まとめ

1. SNI対応の証明書の取得: 正確なドメイン名で証明書が発行されていることを確認します。

2. Apache/Nginx設定の更新: 設定ファイルを編集し、必要に応じて再起動を行います。

3. SSL/TLSの脆弱性スキャン: 一般的な問題点がないか、定期的にチェックします。

4. ログのモニタリング: セキュリティ上のリスクやパフォーマンス低下を防ぐために、ログファイルを監視します。

関連記事:

お気軽にご相談ください

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