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. ログのモニタリング: セキュリティ上のリスクやパフォーマンス低下を防ぐために、ログファイルを監視します。
関連記事: