SSL化したのに「保護されていない通信」が出る原因と解決法
「SSL証明書を設定したのに、ブラウザに『保護されていない通信』って表示される…」
この現象、実はSSL化あるあるなんです。原因は「混在コンテンツ(Mixed Content)」と呼ばれる問題で、サイト内にhttp://のまま残っている要素があると発生します。
今回は、この問題の原因と具体的な解決方法を解説します。
結論:SSL化は「証明書を入れたら終わり」ではない
SSL証明書の重要性については以前の記事で解説しましたが、証明書をインストールしただけでは完了しません。サイト内のすべての要素がhttps://で読み込まれていないと、ブラウザは「完全には安全ではない」と判断します。
| 状態 | ブラウザの表示 | 訪問者の印象 |
|---|---|---|
| 完全SSL化 | 鍵マーク(安全) | 安心して利用できる |
| 混在コンテンツあり | 「保護されていない通信」 | 不安を感じる |
| SSL未設定 | 「保護されていない通信」 | 離脱する可能性大 |
サイトの信頼性にも直結するので、早めに解決しましょう。
混在コンテンツとは?
httpsで配信しているページの中に、httpで読み込んでいる要素(画像、CSS、JavaScriptなど)が混在している状態です。
例えば、こんなケースです。
- 記事内の画像URLが「http://example.com/image.jpg」のまま
- テーマのCSS内でhttp://のフォントを読み込んでいる
- 外部サービスのスクリプトがhttp://で埋め込まれている
原因①:記事内の画像・リンクがhttp://のまま
SSL化する前に投稿した記事の画像やリンクは、http://のまま残っています。記事が多いと手作業での修正は現実的ではありません。
解決方法
「Search Regex」プラグインを使って、データベース内のURLを一括置換します。
- プラグイン「Search Regex」をインストール・有効化
- 検索欄に「http://あなたのドメイン.com」を入力
- 置換欄に「https://あなたのドメイン.com」を入力
- 「すべて置換」を実行
注意:実行前に必ずバックアップを取ってください。データベースを直接変更するので、間違えると取り返しがつきません。
原因②:WordPressの設定URLがhttp://のまま
WordPress管理画面の「設定」→「一般」にある2つのURL設定を確認しましょう。
| 設定項目 | 修正前 | 修正後 |
|---|---|---|
| WordPress アドレス (URL) | http://example.com | https://example.com |
| サイトアドレス (URL) | http://example.com | https://example.com |
この2つが両方ともhttps://になっていることを確認してください。
原因③:テーマ・プラグインがhttp://を出力している
テーマやプラグインのソースコード内に、http://がハードコードされていることがあります。特にカスタマイズしたテーマや、古いプラグインで起きやすい問題です。
解決方法
「Really Simple SSL」プラグインを使えば、サイト全体のhttpリクエストを自動的にhttpsにリダイレクトしてくれます。根本的な修正ではありませんが、応急処置として有効です。
原因④:外部サービスの埋め込みがhttp://
Googleマップ、YouTube、SNSウィジェットなどの埋め込みコードがhttp://になっている場合があります。
解決方法
埋め込みコードのURLをhttps://に変更するか、最新の埋め込みコードを取得し直しましょう。現在、主要なサービスはすべてhttps://に対応しています。
混在コンテンツの見つけ方
どこでhttp://が残っているか特定する方法です。
- ブラウザの開発者ツール — F12キーで開き、「Console」タブに「Mixed Content」の警告が表示される
- Why No Padlock? — URLを入力するとhttp://の要素を一覧表示してくれるオンラインツール
- SSL Insecure Content Fixer — WordPressプラグインで混在コンテンツを検出・修正
http→httpsのリダイレクト設定も忘れずに
SSL化した後、httpでアクセスした人を自動的にhttpsへ転送する設定も必要です。.htaccessに以下のリダイレクトルールが入っているか確認しましょう。
多くのレンタルサーバーでは、管理画面から「常時SSL化」をONにするだけで設定できます。
まとめ:SSL化を完全に仕上げよう
- SSL証明書を入れただけでは不十分な場合がある
- 混在コンテンツ(httpが残っている要素)が主な原因
- Search Regexで記事内URLを一括置換
- WordPressの設定URLをhttpsに変更
- Really Simple SSLで応急処置も可能
- ブラウザの開発者ツールで問題箇所を特定
「SSL化したはずなのに警告が消えない」「どこにhttpが残っているか分からない」という方は、お気軽にご相談ください。