Google SEO 上級

独立站HTTPS設定:SSL証明書、HSTS、混合コンテンツの修正

独立站でSSL証明書を入れただけではHTTPSは30%完了。合格ラインには3つの関門があります。証明書はLet's Encryptの無料ECDSA証明書で90日自動更新、残り15日でアラート。...

独立站HTTPS配置:证书、HSTS与混合内容三层检查HTTPS hardening: certs, HSTS and mixed-content in three layers 证书装了不等于HTTPS合格 —— HSTS不加、混合内容不洗完,浏览器照样打红色警告A cert alone is not HTTPS-ready — without HSTS and mixed-content cleanup the browser still flags it 层Layer 关键动作Key action 量化门槛Quantitative bar 1 证书1. Cert ECDSA P-256 · 90天自动续期ECDSA P-256, 90-day auto-renew 剩余有效期 ≥ 15 天告警Alert if ≤ 15 days left 2 HSTS2. HSTS max-age ≥ 31536000 · 预加载max-age ≥ 31536000, preload 先 5 分钟观察再升 1 年Start 5 min, ramp to 1 year 3 混合内容3. Mixed content 自动升级 · CSP升级Upgrade-insecure-requests 反直觉判断:HSTS不是加得越快越好,第一次直接上一年期会把测试环境锁死Counter-intuitive: ramping HSTS too hard locks your staging out for a year 正确节奏:先 max-age=300 跑 1 周,再升到 86400 跑 1 个月,最后才上 31536000 + preloadRamp 300s for 1 week, 86400s for 1 month, then 31536000 + preload 红线:HTTP 80端口必须 301 跳 HTTPS,不能保留可访问的 HTTP 页面Red line: port 80 must 301 to HTTPS — no reachable HTTP pages left 否则搜索引擎会把 http 和 https 当成两份内容,分散权重并触发重复内容判定Otherwise search engines split signals across two versions and flag duplicates 验收:SSL Labs 评级 A 以上 · 浏览器地址栏无警告 · 全站 mixed content 0 条Pass criteria: SSL Labs A+ · no browser warnings · zero mixed-content hits 每月跑一次 SSL Server Test,证书到期前 15 天必须有人收到告警Re-run SSL Server Test monthly; alert 15 days before expiry
HTTPSの3層チェック:証明書の自動更新、HSTSの段階的引き上げ、混合コンテンツの自動クリーニング

独立站HTTPS設定:SSL証明書、HSTS、混合コンテンツの修正

結論から言うと:独立站でSSL証明書を入れただけではHTTPSは30%完了。合格ラインには3つの関門があります。証明書はLet’s Encryptの無料ECDSA証明書で90日自動更新、残り15日でアラート。HSTSは300秒から86400秒、さらに31536000秒へと3段階で引き上げ、最後にpreloadを追加。混合コンテンツはCSPのupgrade-insecure-requestsヘッダーで自動的にアップグレードし、その後<img>、<script>、インラインスタイルに残ったhttp://のハードコードを手作業で除去します。SSL Labsの評価がA以上になって初めて合格です。

1. 証明書の選定と自動更新:OV証明書は買わない、手動更新もしない

多くの独立站は初年度に有料SSL証明書を買い、翌年更新を忘れてブラウザに赤い警告を出されます。直感に反する結論ですが、ほとんどのB2B独立站にはLet’s Encryptの無料DV証明書で十分です。OCSP staplingもA+評価も取得でき、有料OV証明書で追加される企業名表示はコンバージョン率に測定可能な影響を与えません。

証明書の選定で押さえるべきは2点だけです。1つ目は鍵アルゴリズムで、RSA 2048ではなくECDSA P-256を選ぶとハンドシェイクのサイズが40%小さくなり、モバイルの初回読み込みが約80ミリ秒速くなります。2つ目は更新方法で、certbotかacme.shによる自動更新が必須です。crontabで毎日1回チェックし、手動更新は絶対にしません。証明書切れの事故は90%が担当者の退職か失念が原因です。

証明書の種類 年間コスト ブラウザ表示 適した用途 おすすめ
Let’s Encrypt DV ECDSA 0円 鍵アイコン、企業名なし ほとんどのB2B独立站 既定の選択、自動更新
Let’s Encrypt DV RSA 0円 鍵アイコン、企業名なし 旧端末の互換性が必要な場合 IE11のトラフィックがある場合のみ
有料OV証明書 2000〜8000元/年 緑色の企業名 金融、決済、高単価 不要なら買わない
有料EV証明書 5000〜20000元/年 EV表示(ほとんどのブラウザで廃止) ほぼ出番なし 推奨しない

導入例:杭州のSaaS海外展開サイトでacme.shを使いLet’s Encrypt証明書を取得。crontabに0 3 * * 1 /root/.acme.sh/acme.sh –renew -d example.comを設定し、毎週月曜の午前3時に自動で更新をチェックします。同時に監視に「証明書の残り有効期間が15日未満なら企業WeChatでアラート」というルールを追加。この設定を一度書けば、その後2年は触る必要がありません。

複数ドメインとワイルドカードの扱いは、CDNグローバル高速化のノード証明書戦略と合わせて設計します。CDN事業者は通常エッジ証明書を提供しているため、オリジン証明書とエッジ証明書は別々に管理し、エッジ証明書の更新をオリジンに依存させないようにします。

2. HSTS:段階的に引き上げ、一気に設定しない

HSTS(HTTP Strict Transport Security)は、ブラウザにHTTPSを強制させるレスポンスヘッダーです。直感に反するのは、max-ageを長くするほど安全になる一方で、危険も大きくなる点です。最初からmax-age=31536000を設定すると、テスト環境やstagingサブドメイン、社内管理画面が1年間HTTPでアクセスできなくなり、証明書に問題が起きればサイト全体が停止します。

正しい移行ステップは3段階です。1週目はmax-age=300(5分)にして、ユーザーからの報告や業務上の異常がないか様子を見ます。2〜4週目はmax-age=86400(1日)にして異常がないことを確認します。1か月後にmax-age=31536000(1年)へ引き上げ、includeSubDomainsを追加します。preloadリストへの申請はさらに後回しにし、安定稼働3か月を過ぎてからchromium preloadへ申請するのがおすすめです。

フェーズ HSTSヘッダーの書き方 観察期間 リスクポイント
第1段階 Strict-Transport-Security: max-age=300 1週間 リスクはほぼなく、いつでも戻せる
第2層 max-age=86400 1か月 一部の古いブラウザでは非対応の可能性
第3層 max-age=31536000; includeSubDomains 3か月 サブドメインのHTTPSがすべて整っていること
最終段階 preloadディレクティブを追加し、hstspreload.orgへ申請 長期 申請後の解除は非常に困難

事例:産業機器の海外展開サイトで、メインサイトのexample.comはHTTPSに対応済みですが、legacy.example.comはまだHTTPのままだとします。いきなりincludeSubDomainsを設定すると、legacyサブドメインのユーザーが締め出されます。正しい手順は、まずすべてのサブドメインをHTTPS化し、その後メインサイトのHSTSを段階的に1年へ引き上げることです。サブドメインの一覧はSSL Labsのテストレポートで確認できます。

HSTSと海外展開サイトのコンプライアンス基盤の転送セキュリティ要件は一致しています。GDPRが求める個人データ転送の暗号化に対して、HSTSは最も直接的な技術的実装です。

三、混合コンテンツ:自動アップグレードと手動クレンジングの2工程

混合コンテンツとは、HTTPSページ内でhttp://プロトコルのリソースを読み込むことを指し、2種類に分かれます。受動的混合コンテンツ(画像、動画、フォント)はブラウザが自動的にブロックしますがエラーは出ません。能動的混合コンテンツ(<script>、<iframe>、fetch、XHR)はページが赤く表示され、ブラウザが読み込みを拒否して機能が完全に停止します。

修正は2段階です。まずレスポンスヘッダーContent-Security-Policy: upgrade-insecure-requests;を追加すると、ブラウザがページ内のすべてのhttp://リソース要求を自動的にhttps://へ変更します。これで問題の80%は解決します。次にChrome DevToolsのConsoleパネルで確認し、残ったハードコードされたhttp://をコードとデータベースから削除します。特にWordPressのwp_optionsテーブルのsiteurlとhome、過去記事の<img src=”http://…”>のような古いデータに注意してください。

混合コンテンツの種類 ブラウザの動作 修正の優先度 修正方法
http://<script>または<iframe> 即座にブロックされ、ページにエラー P0、すぐに修正 参照元をhttpsに変更、またはCDNを切り替え
http:// XHR/fetch リクエスト コンソールにエラー、機能が停止 P0、すぐに修正 コード内で相対プロトコルまたはhttpsに変更
http://<img>画像 一部のブラウザは自動アップグレード P1、1週間以内に修正 upgrade-insecure-requestsで保険をかける
http://のフォントやCSS背景画像 サイレント失敗でスタイルが崩れる P1、1週間以内に修正 CDNでhttpsリンクに差し替え
http://の<a href>リンク HTTPに遷移しエラーは出ないが漏えいする P2、毎月クリーンアップ サイトマップ内で一括置換

WordPressサイトで最も多い落とし穴は、過去記事の画像リンクがhttp://でハードコードされていることです。データベースでSQLによる一括置換を直接行わないでください。まずバックアップを取り、Search Replace DBツールでシリアライズ安全な置換を行います。そうしないとPHPのシリアライズデータが壊れます。バックアップの方法はこちらサイトのバックアップと復元演習。

混合コンテンツのクリーンアップとCore Web Vitalsの最適化は連動しています。ブロックされたスクリプトはLCPを遅らせ、読み込みを拒否された画像はCLSを引き起こします。混合コンテンツをクリーンアップすると、この2つの指標は通常自動的に改善します。

四、受け入れチェックリストと毎月の点検

HTTPS設定は一度公開したら終わりではありません。証明書は期限切れになり、サブドメインは新たに追加され、過去のコンテンツでhttpリンクが再び混入します。毎月の点検表を作成し、月に一度実行すれば5〜10分で完了します。

チェック項目 ツール/方法 合格ライン 不合格時の対応
SSL Labsの評価 ssllabs.com/ssltest AまたはA+ TLS設定を調整し、古いプロトコルを無効化
証明書の残り有効期間 openssl s_client 15日以上 直ちに更新を実行
HTTPからHTTPSへのリダイレクト curl -I http://example.com 301でhttpsへ rewriteルールを追加
HSTSヘッダーの有無 curl -Iでレスポンスヘッダーを確認 max-ageが86400以上 レスポンスヘッダー設定を追加
混合コンテンツの件数 Chrome DevToolsのコンソール 0件 httpのハードコードを特定して置換
TLSバージョン SSL Labsのレポート TLS 1.2/1.3のみ TLS 1.0/1.1を無効化

点検の自動化方法はこちらサイト監視とアラートの証明書期限切れと可用性監視の章をご覧ください。ハッキング後はHTTPS設定が壊れていることが多いです。クリーンアップ手順はこちらサイトがハッキングされた後のクリーンアップと再インデックス。

直感に反する注意点:HSTS preloadは簡単に申請しないでください。一度あなたのドメインがブラウザ内蔵のpreloadリストに入ると、将来削除するには専用の削除手順を踏む必要があり、数か月間は古いユーザーのブラウザでHTTPSが強制され続けます。サブドメインやテスト環境を頻繁に調整している場合は、preloadはメインサイトが安定稼働して半年以上経ってから検討してください。

FAQ よくある質問

無料のLet’s Encrypt証明書で十分ですか、有料のOVを買うべきですか?
ほとんどのB2B独立サイトには完全に十分です。Let’s Encryptは90日間の無料DV証明書を提供し、ECDSAとRSAをサポートし、自動更新で運用負荷はゼロ、SSL Labsの評価もAまたはA+が取れます。有料OV証明書で追加されるブラウザアドレスバーの企業名表示は、B2Bバイヤーのコンバージョン率に測定可能な改善をもたらしません。金融、決済、高単価でコンプライアンス要件がある場合のみOVを検討してください。EV証明書はChromeとFirefoxで企業名が表示されなくなったため、購入する必要はさらにありません。
HSTSを最初からmax-age=31536000に設定しても大丈夫ですか?
だめです、それは最もよくある設定事故です。いきなり1年で設定すると、すべてのサブドメイン、テスト環境、管理画面が1年以内にHTTPSで強制ロックされ、証明書に問題が出たりHTTPS未設定のサブドメインがあると、全サイトのユーザーがアクセスできなくなります。正しい手順は、まずmax-age=300で1週間、次に86400で1か月、最後に31536000にincludeSubDomainsを付けて本番です。preloadリストへの登録はさらに後、安定して3か月経ってから検討します。
混在コンテンツはどうやって一括修正する?ワンクリックツールはある?
2ステップです。まずレスポンスヘッダにContent-Security-Policy: upgrade-insecure-requestsを追加すると、ブラウザがページ内のhttp://リソースを自動でhttps://に変えてくれます。これで8割は解決します。次にChrome DevToolsのコンソールで全サイトを一通り確認し、残ったハードコードのhttp://をコードとデータベースから消します。WordPressサイトではwp_postsを直接SQL置換せず、Search Replace DBツールでシリアライズを壊さない安全な置換を行ってください。修正後はSSL LabsとChromeコンソールの両方で検証し、混在コンテンツが0件であることを確認します。
証明書の自動更新はどう設定する?一番怖い落とし穴は?
certbotかacme.shにcrontabを組み合わせて自動更新し、週1回チェックを走らせます。最もよくある落とし穴は、更新スクリプトが使うwebrootとnginxの実際の設定が食い違い、検証に失敗して証明書が気づかないうちに期限切れになることです。設定後すぐに手動で更新コマンドを1回実行して成功を確認し、監視に「証明書の残り有効期間が15日未満になったらアラート」というルールを追加します。CDNの前にCloudflareがある場合、エッジ証明書とオリジン証明書は別物なので、片方だけ更新しないよう注意してください。
HTTPSはSEOに影響する?全サイトHTTPSは必須?
影響しますし、必須です。Googleは2018年からHTTPSをランキングシグナルにしており、ChromeはHTTPサイトをそのまま「保護されていない」と表示します。さらに重要なのは、HTTPとHTTPSは検索エンジンに別バージョンのコンテンツと見なされ、評価が分散し重複コンテンツ判定を招く可能性があることです。正しいやり方は、HTTPの80番ポートをすべてHTTPSへ301リダイレクトし、アクセス可能なHTTPページを残さないことです。ドメイン変更や移行時の301引き継ぎ方法はこちらサイトリニューアルとドメイン変更の記事をご覧ください。
TLSバージョンはどう設定する?TLS 1.0と1.1は無効にすべき?
必ず無効にします。TLS 1.0と1.1はRFC 8996で正式に廃止され、PCI DSS準拠要件や主要ブラウザも順次サポートを終了しています。nginxの設定ではTLSv1.2とTLSv1.3だけを残し、暗号スイートはECDHEとAES-GCMを優先します。設定後にSSL Server Testを1回実行し、評価がA以上で、プロトコル一覧にTLS 1.0と1.1がないことを確認します。ごく古いIE11ユーザーのトラフィックがある場合は、そのUAだけ個別に対応し、全サイトで旧プロトコルを有効にしないでください。

最後に

HTTPS設定は「証明書を入れれば終わり」と考えられがちですが、実は独立系サイトの安全とSEOの土台です。証明書の期限切れ、HSTSの欠如、混合コンテンツの残存。この3つはどれもブラウザに赤い警告を出させ、購入者が警告を見てページを閉じてしまえば、SEOの評価も下がります。一度きちんと設定し、毎月点検すればコストはわずかで、効果はサイト全体に表れます。

実践は3ステップ。まずLet’s Encryptの自動更新で証明書をクリアし、SSL LabsでA以上を取ります。次にHSTSを5分から1年へと3段階で引き上げます。最後にupgrade-insecure-requestsと手作業での整理で混合コンテンツをゼロにします。ここまで終えて、HTTPSはようやく完成します。日々の保守チェックリストは公式サイト保守で毎月やる6つのことにまとめ、HTTPS点検を組み込みましょう。

覚えておきたい一言。HTTPSは証明書を入れれば終わりではなく、証明書の自動更新、HSTSの段階的な引き上げ、混合コンテンツのゼロ化。この3層すべてを通過して初めて本物のHTTPSです。どれか1層でも欠ければ、ブラウザの赤い警告が購入者を追い払います。

环形山
环形山 クレーター専門家

公式アカウント · 環形山 Crater

環形山(Crater)は、WordPress独立サイト開発+Google SEO+GEO全域成長に特化した海外展開支援会社で、スマートハードウェア、産業機器、SaaS、新エネルギーなどの分野を手がけています。

プロダクト能力方法論ホワイトペーパー業界レポート
965件のシェア
78件のナレッジベース