
## この記事でわかること

- 「鍵マークが突然消えた」現象の代表的な 4 つの原因
- ブラウザ別の表示の違いと注意点
- 慌てず順番に確認する切り分け手順
- 復旧後に確認すべき周辺項目

SSL の役割や仕組みの基礎は [SSL とは｜Web 担当者向けにわかりやすく解説](/blog/ssl-basics-smb) で整理しています。

## 「鍵マーク消失」の意味

ブラウザのアドレスバーに表示される鍵マークは、サイトが SSL/TLS で保護されていることを示すサインです。これが急に消えた、あるいは「保護されていない通信」「Not Secure」と表示されるようになった場合、サイトの安全性に関わる何かが変化しています。

放置するとブラウザによっては警告画面に進化し、訪問者がサイトに到達できなくなります。早めに切り分けて対処します。

![鍵マーク消失の代表的な 4 つの原因](/blog/padlock-suddenly-gone/four-causes.svg)

## 原因 1: SSL 証明書の期限切れ

最も多い原因です。証明書の有効期限が過ぎると、ブラウザは即座に警告表示に切り替わります。

### 確認方法

ブラウザのアドレスバー左の警告マークをクリック → 「証明書を表示」「詳細」で有効期間を確認。あるいは [SSL 証明書 単発チェック](/ssl/check) で 30 秒で確認できます。

### 対処

- 自動更新が動いているはずなのに切れた → [SSL 自動更新の仕組みと現実解](/blog/ssl-renewal-automation) の「壊れる代表的なパターン」を参照
- 手動更新で運用していた → 即座に再発行（[SSL 期限切れの警告が出た時の直し方](/blog/ssl-expired-warning-fix)）

## 原因 2: mixed content（HTTPS と HTTP の混在）

「証明書は有効なのに鍵マークが消えた」「鍵マークが付いていても警告が出る」場合は、mixed content の可能性が高いです。

### 症状

- アドレスバーに「保護されていない通信」「Not Secure」表示
- ブラウザコンソール（F12）に `Mixed Content: ...` 警告

### 主な原因

- ページは https で配信されているが、画像 / CSS / JS / iframe が http で読み込まれている
- 外部サービスのタグ（広告、アクセス解析、SNS シェアボタン等）が http 経由
- WordPress で過去に http 時代に投稿した記事の画像 URL が http のまま

### 確認方法

```javascript
// ブラウザのコンソールで実行（F12 → Console タブ）
// 警告対象の URL がリストアップされる
```

または curl でレスポンスを確認:

```bash
curl -s https://example.co.jp/ | grep -oE 'http://[^"]+' | sort -u
```

### 対処

1. 該当 URL を特定
2. データベース or ファイルで `http://` を `https://` に一括置換
3. 外部サービス埋め込みも https 版に差し替え

詳細は [https にならない / つながらない時の原因と対処](/blog/https-not-loading-fix) のパターン 4 を参照。

## 原因 3: 中間証明書チェーンの不備

証明書の有効期限内なのに「認証局が信頼されていません」と出るケース。**中間証明書（intermediate certificate）** がサーバーに正しくインストールされていないと起きます。

### 症状

- Chrome では正常表示、iOS Safari や古い Android で警告
- 「認証局が信頼されていません」「NET::ERR_CERT_AUTHORITY_INVALID」

### 主な原因

- 証明書をサーバーにインストールする時、CA バンドル（中間証明書のチェーン）を結合し忘れた
- nginx / Apache の `ssl_certificate` ディレクティブで、**サーバー証明書 + 中間証明書を結合したファイル**を指定する必要があるが、サーバー証明書だけになっている

### 確認方法

```bash
# チェーンの完全性を確認
openssl s_client -connect example.co.jp:443 -showcerts < /dev/null
```

`Verify return code: 0 (ok)` ならチェーン完全。`unable to get local issuer certificate` 等のエラーが出れば不備があります。

### 対処

認証局から提供された CA バンドル（`ca-bundle.crt` 等）を、サーバー証明書と結合して設定:

```bash
# nginx の場合
cat server.crt intermediate.crt > fullchain.crt
# nginx 設定で ssl_certificate /path/to/fullchain.crt;
```

## 原因 4: HSTS と複合トラブル

HSTS（Strict-Transport-Security）が設定されているサイトで、SSL に問題が起きると、ブラウザは http にフォールバックできず、警告画面のまま操作できなくなります。

### 症状

- ブラウザで「危険を承知でアクセス」のリンクが表示されない
- 「閉じる」しか選択肢が無い

### 対処

HSTS の `max-age` を一旦 0 にして、ブラウザのキャッシュをクリアしてから対応する、というのが緊急回避策です。ただし HSTS preload リストに登録されている場合はブラウザに焼き込まれているため、すぐには解除できません。

予防的には:
- HSTS を新規導入する時は **max-age を最初は短く（例: 1 日 = 86400）** 設定
- 動作確認してから本番値（6 ヶ月〜1 年）に上げる
- preload リスト登録は本当に必要な場合のみ

## ブラウザ別の表示の違い

![ブラウザ別の SSL 警告表示の違い](/blog/padlock-suddenly-gone/browser-display.svg)

| ブラウザ | 正常時 | 期限切れ | mixed content |
|---|---|---|---|
| Chrome / Edge | 鍵マーク | 警告画面 | 「保護されていない通信」 |
| Firefox | 鍵マーク | 警告画面 | 鍵マーク + 黄色の警告 |
| Safari (Mac) | 鍵マーク | 警告画面 | アドレスバーに警告アイコン |
| Safari (iOS) | 鍵マーク | 警告画面 | 鍵マーク + 警告 |

ブラウザごとに警告タイミングが微妙に違うため、複数ブラウザでの確認が安全です。

## 慌てず順番に確認する手順

### ステップ 1: 証明書の期限を確認

[SSL 証明書 単発チェック](/ssl/check) で 30 秒。期限切れなら原因 1 で確定。

### ステップ 2: ブラウザコンソールで mixed content を確認

F12 → Console タブで `Mixed Content` 警告が出ていれば原因 2 で確定。

### ステップ 3: 別ブラウザ / 別 OS でも同じ症状か確認

iOS Safari でだけ警告が出るなら原因 3（中間証明書チェーン）の可能性大。

### ステップ 4: 直近の変更履歴を確認

「昨日まで動いていたのに」という場合は、直前 24〜48 時間に行った変更が引き金です。サーバー再起動、CDN 設定変更、CMS の更新、外部タグの埋め込み等。

## 復旧したら確認すべきこと

1. **全ページでの鍵マーク表示**
2. **モバイル（iOS / Android）での表示確認**
3. **検索エンジンのインデックス（Google Search Console の URL 検査）**
4. **アクセス解析の集計が止まっていないか**（mixed content で外部スクリプトが落ちている可能性）

## まとめ

- 鍵マーク消失の代表的な原因は **期限切れ / mixed content / 中間証明書 / HSTS 複合トラブル**
- ブラウザのエラーコード、コンソール警告、curl の出力で機械的に切り分け
- 別ブラウザ / 別 OS で確認すると中間証明書系の不備に気付きやすい
- 直近 48 時間の変更履歴と照合する

## まずは現状を把握しましょう

自社サイトの SSL の状態は、[SSL 証明書 単発チェック](/ssl/check) で 30 秒の単発診断ができます。証明書期限・HSTS・HTTP/2/3 対応・CT log の発行履歴までまとめてレポートします。

緊急対応や、原因が特定できない場合は [お問い合わせフォーム](/contact) で「SSL 関連のご相談」を選択してご連絡ください。スポット対応（5 万円〜）で 24〜48 時間以内に原因切り分けと修正をご提案します。複数ドメインの棚卸しから自動更新セットアップまで任せたい場合は [SSL 棚卸し・自動更新支援](/ssl) もご検討ください。
