結論(HTTPSで配信されている)
HTTPSで配信されているとは、サイトにアクセスしてリダイレクトをたどった最終的な応答が、TLSで暗号化されたHTTPS(https:)で返っている状態です。HTTPSは盗聴・改ざんの防止と、接続先が正しいサーバーであることの確認を同時に実現します。閲覧専用のページでも改ざんの危険があるため、サイト全体のHTTPS化が前提です。セキュリティAIチェッカーでは最も重い重み5(critical)の項目です。
この記事のポイント
- HTTPSは機密性・完全性・真正性の3つを守ります。HTTPでは通信の盗聴やページの書き換えが可能です。
- 個人情報を扱わないページやフォーム以外のページも、HTTPSにする必要があります(ASVS V12.2.1は「すべての接続」にTLSを求めています)。
- Chrome 154で「常に安全な接続を使用する」が既定で有効になり、HTTPのみの公開サイトには初回アクセス前に警告が出ます。
- セキュリティAIチェッカーは、転送を最大4回までたどった最終URLが https: なら○、http: なら×と判定します。
- 証明書の取得→並行稼働→内部リンク修正→恒久転送→HSTSの段階導入、の順で移行するとサイトを壊しません。
| 診断項目名 | HTTPSで配信されている |
|---|---|
| 項目ID | transport.https |
| 分類 | 通信の暗号化(HTTPS・TLS・HSTS) |
| 重大度・配点の重み | 最重要(critical) 重み 5 |
| 関連する標準・ガイドライン | OWASP ASVS 5.0.0 V12.2.1(L1:外部向けHTTPサービスとの全通信にTLSを使い、非暗号化通信へフォールバックしない)、ASVS V12.1.1(L1:TLS 1.2/1.3のみ有効)、OWASP WSTG-CRYP-01(Testing for Weak Transport Layer Security)、CWE-319(Cleartext Transmission of Sensitive Information) |
HTTPSで配信されているとは
HTTPSで配信されているとは、診断対象のURLにアクセスし、リダイレクトをたどった最終的な応答がHTTPS(https:)で返っている状態のことです。HTTPSはHTTPをTLSで暗号化したもので、通信内容の盗聴・改ざんの防止と、接続先が正しいサーバーであることの確認(サーバー認証)を同時に実現します。
自治体公式サイトは、住民が申請書をダウンロードし、問い合わせフォームに個人情報を入力し、災害時には避難情報を確認する場所です。閲覧するだけのページであっても、通信経路上で内容をすり替えられれば、偽の情報や不正なリンクを住民に見せられてしまいます。そのためセキュリティAIチェッカーでは、この項目に最も重い 重み5・重大度critical を割り当てています。
HTTPSが守る3つのもの
| 守るもの | 内容 |
|---|---|
| 機密性 | 公衆無線LANや経路上の機器で通信内容を読み取られない |
| 完全性 | ページの文章、ダウンロードPDF、JavaScriptを経路上で書き換えられない。HTTPでは広告挿入やマルウェア配布リンクへの差し替えが技術的に可能 |
| 真正性 | サーバー証明書により、接続先が当該ドメインの正当な運用者であることをブラウザが検証する |
なぜサイト全体のHTTPS化が必要なのか
ブラウザ側の動向(ChromeのHTTPS既定化)
Googleは2025年10月、Chrome 154で「常に安全な接続を使用する(Always Use Secure Connections)」を既定で有効化し、HTTPSのない公開サイトへ初めてアクセスする前にユーザーの許可を求めると発表しました(発表時の予定は2026年10月。Chrome 154の安定版は2026年9月22日に公開済み)。先行してChrome 147(2026年4月)では、セーフ ブラウジングの保護強化機能(Enhanced Safe Browsing)を有効にしているユーザーが対象になっています。
ローカルIPや社内イントラネットなどのプライベートサイトは警告の対象外です。つまり、公開されている自治体サイトがHTTPのままだと、Chrome利用者には警告画面が表示されることになります。
HTTPS化についてよくある誤解
- 「個人情報を扱わないページはHTTPでよい」:誤りです。改ざんの危険は閲覧専用ページにもあり、HTTPページから読み込まれるリンクやフォームの送信先も攻撃者が書き換えられます。ASVS V12.2.1は「すべての接続」にTLSを求めています。
- 「フォーム画面だけHTTPSにすればよい」:入口のHTTPページが改ざんされれば、フォームへのリンク自体をフィッシングサイトに差し替えられます(いわゆるSSL Strip攻撃)。サイト全体のHTTPS化が前提です。
- 「HTTPSなら安全なサイト」:HTTPSは通信路を保護するだけで、サイトのアプリケーション脆弱性の有無とは無関係です。この項目の○は「通信路の暗号化が成立した」という意味に限られます。
関連する診断項目との違い
この項目は「最終的にHTTPSで応答しているか」だけを見ます。HTTPでアクセスされたときの転送は「HTTPからHTTPSへ転送」、HTTPSからHTTPへ戻る転送は「HTTPSからHTTPへ降格しない」、証明書の状態は「TLS証明書が現在有効」と「証明書チェーンが信頼される」、ページ内のHTTP資産は「Mixed Contentがない」でそれぞれ確認します。
HTTPSで配信されているの診断基準(セキュリティAIチェッカー)
取得方法
- 入力URL(
http:またはhttps:)に対し、サーバー側からGETリクエストを送ります(pinnedFetch。DNS解決結果を固定して内部ネットワークへの到達を防止)。 - 3xx応答(301/302/303/307/308)の
Locationを最大4回までたどり、最終的に得られた応答のURL(finalUrl)を判定対象にします。 - HTTPS接続時は
rejectUnauthorized: true(Node.js標準の証明書検証)で接続します。
判定条件
| 判定 | 条件 | 得点への影響 |
|---|---|---|
| ○ 問題なし(pass) | 最終URLのスキームが https: | 重み5を満点として加算 |
| × 要改善(fail) | 最終URLのスキームが http:(HTTPのまま応答、またはHTTPSからHTTPへ転送された) | 重み5の分母に入り、0点 |
| 対象外(na) | なし(常に判定される) | — |
- HTTPS接続で証明書検証に失敗した場合(期限切れ・ホスト名不一致・自己署名・中間証明書欠落など)は、応答そのものを取得できないため診断全体がエラーとなり、レポートは生成されません。この場合は本項目の結果ではなく、エラーメッセージで原因を確認します。
- この項目は「トップページの最終到達URL」だけを見ます。サイト内の他ページや画像・スクリプトがHTTPで読み込まれているかは、混在コンテンツ系や複数ページ診断の別項目で扱います。
- スコアは
pass=1.00、warn=0.45、fail=0の重み付き平均です。重み5の×は、他の項目が満点でも全体スコアを大きく押し下げます。
自治体サイトでの判定例
| 入力URL | 応答の流れ | 判定 |
|---|---|---|
http://www.city.example.lg.jp/ | 301で https://www.city.example.lg.jp/ へ転送、200応答 | ○ |
https://www.city.example.lg.jp/ | そのまま200応答 | ○ |
http://www.town.example.lg.jp/ | 転送なしでHTTPのまま200応答 | × |
https://www.village.example.lg.jp/ | 302で http://www.village.example.lg.jp/top.html へ転送 | ×(降格。「HTTPSからHTTPへ降格しない」も×) |
https://www.city.example.lg.jp/ | 証明書期限切れ | 診断エラー(レポートなし) |
HTTPSで配信されていないとどんなリスクがあるか
- 経路上での盗聴:問い合わせフォームの入力内容(氏名・住所・電話番号・相談内容)が平文で流れ、公衆無線LANなどで傍受されるおそれがあります(CWE-319)。
- コンテンツ改ざん:経路上の攻撃者が、ページ内の申請書PDFのリンクをマルウェアに差し替える、避難所情報を書き換える、偽の振込先を表示する、といった改ざんを行えます。
- SSL Strip攻撃:HTTPページ内の「HTTPSのフォームへ」というリンクをHTTPのまま中継させ、住民に暗号化されていない画面で入力させる攻撃です。WSTG-CRYP-01でも、HTTPからHTTPSへの転送を経路上で妨害されうる点が指摘されています。
- 信頼性の低下:前述のChromeの既定変更により、HTTPサイトには警告画面が出ます。住民が「自治体サイトに警告が出る」ことに不安を感じたり、警告に慣れて本物の攻撃を見逃したりする副作用があります。
HTTPS化の設定方法(Apache・nginx・IIS・Next.js)
1. 証明書の取得と配置
- 公的に信頼される認証局(CA)の証明書を取得します(ASVS V12.2.2)。CMS事業者やCDN(クラウド型WAFを含む)を利用している場合は、事業者側で自動発行・自動更新される方式を優先します。
- 2026年3月15日以降、公開TLS証明書の最大有効期間は200日に短縮されています(CA/Browser Forum Ballot SC-081v3。2027年3月15日から100日、2029年3月15日から47日)。手動更新は運用破綻の原因になるため、ACMEなどによる自動更新を前提に設計してください。
2. Webサーバーの設定例
Apache(VirtualHostに書きます。証明書の指定は .htaccess には書けません)
# :443 側
<VirtualHost *:443>
ServerName www.city.example.lg.jp
SSLEngine on
SSLCertificateFile /etc/ssl/certs/www.city.example.lg.jp.fullchain.pem
SSLCertificateKeyFile /etc/ssl/private/www.city.example.lg.jp.key
SSLProtocol -all +TLSv1.2 +TLSv1.3
</VirtualHost>
nginx
server {
listen 443 ssl;
http2 on; # nginx 1.25.1以降。それ以前は listen 443 ssl http2;
server_name www.city.example.lg.jp;
ssl_certificate /etc/ssl/www.city.example.lg.jp/fullchain.pem;
ssl_certificate_key /etc/ssl/www.city.example.lg.jp/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
}
IIS:サイトのバインドに https(443)を追加し、証明書を選択します。HTTP→HTTPSの転送はURL Rewriteまたは <hsts redirectHttpToHttps="true">(IIS 10.0 version 1709以降)で設定できます(詳細は「HTTPからHTTPSへ転送」の項目)。
Next.js(Vercel):Vercelは独自ドメインにも証明書を自動発行し、HTTPからHTTPSへの転送を自動で行います。独自ドメインを追加した後、DNS設定が正しく反映されているかをダッシュボードで確認します。
3. サイトを壊さない段階的な移行手順
- 棚卸し:ページ内の
http://で始まる画像・スクリプト・CSS・iframe・フォーム送信先を検索します。HTTPS化後にこれらが混在コンテンツとしてブロックされ、表示崩れやフォーム不動作の原因になります。 - HTTPSを並行稼働:HTTPを残したままHTTPSでも同じ内容を表示できる状態にし、主要ページ・申請フォーム・外部連携(地図、動画、予約システム)を確認します。
- 内部リンクの修正:CMSのサイトURL設定、テンプレート内の絶対URL、canonical、sitemap.xmlをHTTPSに変更します。
- 恒久転送を有効化:HTTPへのアクセスを301/308でHTTPSへ転送します。
- HSTSの段階導入:短いmax-ageから始め、問題がないことを確認して延長します(「HSTSが設定されている」の項目を参照)。
4. HTTPSで配信されているかの確認方法
# 最終URLとステータスを確認(-L で転送をたどる)
curl -sIL http://www.city.example.lg.jp/ | grep -iE '^(HTTP/|location:)'
# 証明書の発行者・有効期限・SANを確認
openssl s_client -connect www.city.example.lg.jp:443 -servername www.city.example.lg.jp </dev/null 2>/dev/null \
| openssl x509 -noout -issuer -subject -dates -ext subjectAltName
最後の行が HTTP/2 200 または HTTP/1.1 200 OK で、直前の location: が https:// で始まっていれば、この項目は○になります。
HTTPS化の注意点
- 共有ホスティングで
.htaccessにphp_valueを書くと、LiteSpeedやCGI環境では500エラーになることがあります。HTTPS化の作業で.htaccessを編集する際は、変更前のファイルを必ず保存し、変更は1つずつ反映して確認してください。 - 外部の予約システムや決済画面などを別ドメインで利用している場合は、そちらのHTTPS対応も確認が必要です。自治体側のページがHTTPSでも、リンク先がHTTPなら住民の入力は保護されません。
よくある質問(FAQ)
個人情報を扱わないページもHTTPSにする必要がありますか?
必要です。閲覧専用のページでも、通信経路上で文章やリンク、ダウンロードPDFを書き換えられるおそれがあります。OWASP ASVS 5.0.0 V12.2.1も、外部向けサービスとの「すべての接続」にTLSを求めています。
問い合わせフォームのページだけHTTPSにすれば十分ですか?
十分ではありません。入口のHTTPページが改ざんされると、フォームへのリンク自体をフィッシングサイトに差し替えられます(SSL Strip攻撃)。サイト全体をHTTPS化してください。
HTTPSのサイトなら安全なサイトといえますか?
HTTPSは通信路を保護する仕組みで、サイトのアプリケーションに脆弱性があるかどうかとは無関係です。この項目の○は「通信路の暗号化が成立した」という意味に限られます。
HTTPのままだとChromeではどうなりますか?
GoogleはChrome 154で「常に安全な接続を使用する」を既定で有効にし、HTTPSのない公開サイトへ初めてアクセスする前に利用者の許可を求めると発表しています。Chrome 154の安定版は2026年9月22日に公開されました。ローカルIPや社内イントラネットなどは対象外です。
HTTPSで配信されているかは、セキュリティAIチェッカーでどう判定されますか?
入力URLから転送を最大4回までたどり、最終URLのスキームが https: なら「○ 問題なし」、http: なら「× 要改善」です。HTTPSからHTTPへ転送された場合も×になります。重み5のため、×だと全体スコアが大きく下がります。
証明書の期限切れでも「HTTPSで配信されている」は判定されますか?
証明書の検証に失敗すると応答そのものを取得できないため、診断全体がエラーになりレポートは生成されません。この場合はエラーメッセージで原因を確認します。
HTTPS化したらまず何を確認すべきですか?
curl -sIL でHTTPのURLを指定し、最後の行が200で、直前のlocationが https:// で始まっているかを確認します。あわせて、ページ内の http:// で読み込む画像やスクリプトが残っていないかも確認してください。
この項目を含む127項目を、URLを入れるだけで無料診断します。
参考資料
- OWASP ASVS 5.0.0 V12 Secure Communication
- OWASP WSTG-CRYP-01 Testing for Weak Transport Layer Security
- Google「HTTPS by default」(Chrome 147/154での既定化)
- Chromium Dash リリース日程(Chrome 154安定版 2026-09-22)
- CA/Browser Forum Ballot SC-081v3
- IPA「TLS暗号設定ガイドライン」
- Microsoft Learn「HSTS Settings for a Web Site <hsts>」
- Vercel Docs「Encryption and TLS」
- Node.js TLS ドキュメント