【iPhone】「この接続は安全ではありませ
ん」というSafariの警告
(Safariのセキュリティ設定)

  • iPhoneで検索結果を開いたら画面いっぱいの警告が出た、という相談がありました。
  • これは、Safariの「接続が安全ではないときに警告」という設定によるもので、読むだけなら「続ける」で構いません。
  • Safariは18.2から、まずHTTPSで開こうとし、開けなかったときだけHTTPに切り替えるのですが、この切り替えの前に一度止まります。
  • 相手のサーバーを調べると、ドメイン用の証明書が用意されていない状態で、ログインや買い物はしない方がよいです。
<svg class="eyecatch-svg" viewBox="0 0 1200 630" xmlns="http://www.w3.org/2000/svg">
  <rect x="0" y="0" width="1200" height="630" fill="#F5F4F2"/>

  <rect x="80" y="70" width="330" height="490" rx="42" fill="#1F2937"/>
  <rect x="96" y="86" width="298" height="458" rx="30" fill="#FFFFFF"/>
  <rect x="116" y="106" width="258" height="34" rx="17" fill="#EDEFF2"/>

  <path d="M 158 240 L 158 214 Q 158 186 186 186 Q 214 186 214 214 L 214 240" fill="none" stroke="#DC2626" stroke-width="12" stroke-linecap="round"/>
  <rect x="136" y="240" width="100" height="72" rx="12" fill="#DC2626"/>
  <path d="M 124 326 L 248 172" stroke="#DC2626" stroke-width="13" stroke-linecap="round"/>

  <rect x="136" y="356" width="212" height="20" rx="10" fill="#1F2937"/>
  <rect x="136" y="390" width="150" height="20" rx="10" fill="#1F2937"/>
  <rect x="136" y="440" width="212" height="12" rx="6" fill="#9CA3AF"/>
  <rect x="136" y="466" width="188" height="12" rx="6" fill="#9CA3AF"/>
  <rect x="136" y="492" width="120" height="12" rx="6" fill="#9CA3AF"/>

  <rect x="900" y="300" width="230" height="240" rx="16" fill="#FFFFFF" stroke="#9CA3AF" stroke-width="6"/>
  <rect x="930" y="336" width="170" height="44" rx="8" fill="#EDEFF2"/>
  <circle cx="954" cy="358" r="9" fill="#9CA3AF"/>
  <rect x="930" y="398" width="170" height="44" rx="8" fill="#EDEFF2"/>
  <circle cx="954" cy="420" r="9" fill="#9CA3AF"/>
  <rect x="930" y="460" width="170" height="44" rx="8" fill="#EDEFF2"/>
  <circle cx="954" cy="482" r="9" fill="#9CA3AF"/>

  <rect x="872" y="70" width="286" height="176" rx="16" fill="#FFFFFF" stroke="#DC2626" stroke-width="6"/>
  <path d="M 922 148 L 922 130 Q 922 112 940 112 Q 958 112 958 130 L 958 148" fill="none" stroke="#DC2626" stroke-width="9" stroke-linecap="round"/>
  <rect x="906" y="148" width="68" height="52" rx="10" fill="#DC2626"/>
  <rect x="1002" y="116" width="120" height="16" rx="8" fill="#C7CBD1"/>
  <rect x="1002" y="150" width="90" height="16" rx="8" fill="#C7CBD1"/>
  <rect x="1002" y="184" width="110" height="16" rx="8" fill="#C7CBD1"/>

  <path d="M 452 268 L 700 180" fill="none" stroke="#DC2626" stroke-width="9" stroke-linecap="round" stroke-dasharray="4 22"/>
  <circle cx="762" cy="158" r="44" fill="#DC2626"/>
  <path d="M 744 140 L 780 176 M 780 140 L 744 176" stroke="#FFFFFF" stroke-width="11" stroke-linecap="round"/>

  <path d="M 452 396 L 852 424" fill="none" stroke="#6B7280" stroke-width="9" stroke-linecap="round" stroke-dasharray="4 22"/>
  <path d="M 828 404 L 872 425 L 826 446" fill="none" stroke="#6B7280" stroke-width="9" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
【iPhone】「この接続は安全ではありませ<br class="chiilabo-br is-on">ん」というSafariの警告<br class="chiilabo-br is-on">(Safariのセキュリティ設定)

関連記事

1. 同じリンクなのに、Chromeでは開けてSafariでは止まる

1. 同じリンクなのに、Chromeでは開けてSafariでは止まる

iPhoneで調べものをしていたら「この接続は安全ではありません」と出て先へ進めない、という相談がありました。
開こうとしていたのは、検索結果の3番目あたりに並んでいた個人による趣味の情報サイトでしたが、怪しいサイトを踏んでしまったのではないか、と心配されていました。

「この接続は安全ではありません」の全画面警告

同じリンクを2つのブラウザで開いてみると、反応が違いました。
Safariでは、本文が出る前に警告の画面で止まりますが、Chromeでは、ページがそのまま表示されました。

この違いはブラウザの設定です。

1.1. Chromeはアドレスバーに印を付けるだけだった

Chromeで開いたときも、何も言われていないわけではありません。
よく見ると、アドレスバーのドメイン名の左に、小さな警告の印が付いています。
そこを押すと「接続 保護されていません」と出て、さらに進むと「接続は安全ではありません」「このサイトでは機密情報(パスワード、クレジットカードなど)を入力しないでください」と書かれていました。

サイト情報に「接続は安全ではありません」と表示されている

つまり、読むのは止めない。
入力はするな、とだけ言っている。
これは、HTTPのページに対する長らくの標準的な扱いです。

1.2. Safariは「接続が安全ではないときに警告」で止めていた

1.2. Safariは「接続が安全ではないときに警告」で止めていた

一方、Safariのほうは、設定を開くと理由が分かります。
「設定」アプリから「アプリ」、「Safari」、「プライバシーとセキュリティ」と進んだところに「接続が安全ではないときに警告」というスイッチがあります1。

Safariの設定にある「接続が安全ではないときに警告」

これがオンだと、HTTPのページを開く前に全画面の警告で止まります。

通常はこのスイッチは任意でオフなのですが、セキュリティやプライバシーを重視している場合に自分でオンにしていることがあります2。
オフにすると全画面の警告は消え、アドレスバーの左端が「安全ではありません」という文字に変わります。
この警告の文字表示は、2019年のiOS 12.2から入っています3。

2. Safariは、先にHTTPSで開こうとしている

2. Safariは、先にHTTPSで開こうとしている

ちなみに、警告の文面をよく読むと、「危険なサイトです」とは書いてありません。
「このWebサイトはHTTPSでの安全な接続に対応していません」です。
つまり、判定しているのはサイトの善悪ではなく、接続の方式です。

2.1. 警告が出るのは、HTTPSへの読み替えで失敗したとき

2.1. 警告が出るのは、HTTPSへの読み替えで失敗したとき

Safari 18.2から、iPhoneのSafariはページを常にHTTPSで読み込もうとします4。
検索結果のリンクが http:// で書かれていても、いったん https:// に読み替えて試します。
そちらで開ければ、利用者は何も気づきませんが、読み替えで失敗すると警告が表示されます5。

これが、「安全な方法では開けませんでした」という警告の意味です。

2.2. 443番の入口はあるのに、証明書は別のものだった

2.2. 443番の入口はあるのに、証明書は別のものだった

では、そのサイトはHTTPSで何が起きているのか。
手元のMacから、HTTPとHTTPSを並べて叩いてみました。

$ curl -sS -o /dev/null -w '%{http_code} -> %{redirect_url}\n' http://www.example.jp/
200 ->

$ curl -sS -o /dev/null -w '%{http_code} -> %{redirect_url}\n' https://www.example.jp/
curl: (60) SSL certificate problem: self signed certificate
000 ->Code language: PHP (php)

http:// は普通に200が返ってきましたが、
https:// は「自己署名証明書」と表示され、HTTPの通信が始まる前に終わってしまいます。
「自己署名(self-signed)」とは、証明書を発行する認証局を通さず、サーバーが自分で自分を証明している状態です6。

返ってきた証明書の中身を見ると、もっとはっきりしました。

$ echo | openssl s_client -connect www.example.jp:443 -servername www.example.jp \
    | openssl x509 -noout -subject -issuer -dates
subject= /C=JP/ST=Tokyo/L=Shibuya/O=GMO CLOUD K.K./CN=sni.red.shared-server.net
issuer=  /C=JP/ST=Tokyo/L=Shibuya/O=GMO CLOUD K.K./CN=sni.red.shared-server.net
notBefore=Apr 10 02:09:25 2017 GMT
notAfter= Apr  8 02:09:25 2027 GMTCode language: JavaScript (javascript)

書かれている名前は、そのサイトのドメインではなくレンタルサーバー事業者の共用サーバーの名前でした。
-servername で伝えているのは、つなぎたいサイトの名前です。
これをSNI(Server Name Indication:サーバー名表示)といって、1つのIPアドレスでたくさんのHTTPSサイトを扱うための仕組みになっています7。

試しに、実在しない名前を伝えても、返ってくる証明書は同じものになります。
つまり、このサーバーは、このドメインで来られても出す証明書を持っていないため、共用サーバーの既定の証明書をそのまま出している、ということです。
外に見せるための証明書ではなく、サーバーを立てたときに置かれたままの初期状態です。

3. 2019年で更新が止まったサイトは、HTTPS化の波の外にいる

3. 2019年で更新が止まったサイトは、HTTPS化の波の外にいる

このサイトの記事をGoogleが最初に見つけたのは2016年で、2019年に更新されたきりになっていました。
その頃のインターネットは、ちょうどHTTPからHTTPSへ移っている途中で、このサイトは更新が止まったためにHTTPSへの移行ができていないようです。

3.1. 無料の証明書と「保護されていません」表示は、2015年から2018年に揃った

もともとセキュリティ証明書は有料で、手続きも面倒なものでした。
それを無料にして自動化したのがLet’s Encryptで、公開ベータが2015年12月、正式なサービスが2016年4月です8。
費用と手間が消えたので、多くの個人サイトでもセキュリティ証明書に対応できるようになりました。

もう一方から押したのがブラウザです。
Chromeは2018年7月のバージョン68から、HTTPのページすべてに「保護されていません」と表示するようになりました9。
無料の証明書が2016年、警告表示が2018年、このサイトの最後の更新が2019年。
ぎりぎり間に合わなかった時期のサイトが、いま警告の対象として残っています。

3.2. レンタルサーバーの無料SSLは、持ち主が申し込まないと始まらない

いまのレンタルサーバーには、たいてい無料の独自SSLが付いています。
ただし、契約すれば勝手に有効になるものではありません。
管理画面でドメインを選んで設定する操作が要ります10。

サーバー側には共用の証明書が出てきても、Safariから見ると「HTTPSに対応していない」と表示されるわけです。

4. 読むだけなら続けてよくて、入力はしない

4. 読むだけなら続けてよくて、入力はしない

では、警告を押しのけて読んでいいのか。
古い記事を読むだけなら、まず問題は起きません。
HTTPで運ばれてくるのは、そのページのHTMLと画像だけだからです。

気にする必要があるとすれば、こちらからの入力を送るときです。
HTTPは暗号化されていないので、同じ無線LANにいる人や、途中の通信を扱える立場の人が中身を読めるからです11。
検索窓に何か打つ、会員登録する、問い合わせフォームに名前と電話番号を入れるなどの操作はやめておきましょう12。。
また、ページに偽のボタンを足された状態で表示される、ということも(常にではありませんが)起こりうる状態です。

2026年10月には、Chromeも同じ方向へ進み、バージョン154からは「常に安全な接続を使用する」が既定で有効になり、公開サイトのHTTPページを開く前に確認を求めるようになります13。

「安全ではありません」という警告は、何か悪いページを開いてしまったように感じますが、このケースでは、10年前に作られたウェブサイトの設定が、古いまま残っていたというだけのことでした。

  1. Appleのユーザガイドでは「HTTPを使用しているWebサイトを閲覧したときに警告を表示する」として案内されています。設定アプリの「アプリ」から「Safari」を開き、「プライバシーとセキュリティ」の下にあります。 – Get a warning when you visit websites that use HTTP on iPhone – Apple サポート
  2. Appleのブラウザエンジンの開発ブログはこの設定を「optional」(任意)と書いていますが、日本語の解説記事には「デフォルトでオン」としているものもあり、既定値は確認できていません。同じiPhoneで撮られた画面には、全画面の警告なしでそのページが表示されているものもありました。 – WebKit Features in Safari 18.2
  3. iOS 12.2以降、暗号化されていないページではアドレスバーに「安全ではありません」と表示されます。個人情報を入力する欄があるページでは、同じ文字が赤で出ます。 – 【iPhone】Safari「安全ではありません」の意味と危険性
  4. Safari 18.2のリリースノートには、iOS・iPadOS・visionOSのSafariは常に安全な接続を先に試し、それが失敗したときだけ非安全なHTTPへフォールバックする、と書かれています。同時に、フォールバックの前に警告を出す設定が全プラットフォームに追加されました。 – WebKit Features in Safari 18.2
  5. macOSでの検証によると、アップグレードが試みられるのはリンクをクリックしたとき、アドレスバーの候補から選んだとき、メニューから開いたときで、アドレスバーに手で入力したり貼り付けたりしたURLは対象外です。警告が出るのは「アップグレードを試みた」かつ「失敗した」場合に限られます。 – How Safari 18.2 https upgrade works
  6. 自己署名証明書は、認証局の審査を経ずにサーバー自身が署名した証明書です。暗号化はできますが、その名前のサイトであることを第三者が保証していないため、ブラウザは警告を出します。 – SSL設定時に表示されるエラーや警告の原因を徹底解明!~ブラウザエラー編~ | さくらのSSL
  7. SNIは、TLSの最初のメッセージで接続先のホスト名をサーバーに伝えるTLSの拡張仕様です。これにより、1つのIPアドレス上で複数のドメインがそれぞれのサーバー証明書を使えるようになりました。 – JPRS用語辞典|SNI(Server Name Indication)
  8. Let’s Encryptは、非営利団体のISRGが運営する認証局です。無料でサーバー証明書を発行し、取得・更新を自動化することでHTTPSの普及を進める目的で作られました。 – インターネット用語1分解説~Let’s Encryptとは~ – JPNIC
  9. Chromeは段階を踏んでいて、最初はパスワードやクレジットカードを入力するページ、次に何かを入力したページ、シークレットモードでのHTTPページと広げ、バージョン68ですべてのHTTPページに表示するようになりました。 – A secure web is here to stay – Chromium Blog
  10. エックスサーバーの場合、サーバーパネルの「SSL設定」から対象ドメインを選んで「独自SSL設定追加」を行います。設定しただけではhttpからhttpsへの転送も行われず、別途リダイレクトの設定が必要だと案内されています。 – 無料独自SSL設定 | レンタルサーバーならエックスサーバー
  11. 総務省は、無線LANでログイン情報やクレジットカード番号などをやりとりするときは、SSL/TLSによって暗号化されていることを確認するよう呼びかけています。 – 無線LANの安全な利用|国民のためのサイバーセキュリティサイト(総務省)
  12. Appleも、こうした警告が表示されるサイトでは絶対にパスワードやクレジットカード番号を入力しないように、と案内しています。警告が出る理由としては、HTTPを使っている場合のほかに、証明書の期限切れや、TLS 1.1以前の古い方式を使っている場合が挙げられています。 – Safariで閲覧中に「安全ではありません」という警告が表示された場合 – Apple サポート
  13. Googleの告知では、2026年4月のChrome 147で強化保護モードの利用者に先行して有効化し、10月のChrome 154で既定にする予定です。警告の対象は公開サイトで、192.168.x.xのようなプライベートなアドレスや、よく訪れるサイトは対象外です。 – HTTPS by default – Google Security Blog