Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今日からはじめるSSLサイト@WordCampHaneda 2019 / wordcamphaneda2019

今日からはじめるSSLサイト@WordCampHaneda 2019 / wordcamphaneda2019

GENKI TANIGUCHI

April 20, 2019
Tweet

More Decks by GENKI TANIGUCHI

Other Decks in Technology

Transcript

  1. WordCamp Haneda 2019
    今日からはじめるSSLサイト。SSL化のリスクと対処法。
    2019/04/20
    (C) Copyright 1996-2016 SAKURA Internet Inc
    さくらインターネット株式会社 技術本部レンタルサーバチーム 谷口元紀

    View Slide

  2. 自己紹介
    2
    谷口元紀(たにぐちげんき)
    来歴
    2016年さくらインターネット入社
    2004年からWebディレクターとして制作会社、事業
    会社などで勤務
    さくらインターネットでのお仕事
    レンタルサーバ/SSL ドメイン販売/CDN
    のサービス企画等を担当

    View Slide

  3. 今日からはじめるSSLサイト
    3

    View Slide

  4. 本日のお品書き
    • SSLってそもそも何?何のためにあるの?
    • WebサイトSSL化のチェックポイント
    • WordPressサイトだからハマるポイント
    • SSL化するリスクはあるの?
    4

    View Slide

  5. SSLって何?
    5

    View Slide

  6. SSLって何?
    • SSL(Security Sockets Layer)はインターネット上
    でデータを暗号化してやり取りする仕組み。
    • 現在はTLS(Transport Layer Security)が主流だ
    けど、SSLが一般的すぎるので本日は「SSL」で
    進めます。
    6

    View Slide

  7. SSLって何?
    • サイト(サーバ)とブラウザの通信を暗号化
    • 通信相手を担保(なりすまし防止)
    • 改ざんの防止
    • ブラウザの警告表示防止
    7

    View Slide

  8. 通信が暗号化される
    • ウェブサイトのサーバとエンドユーザのブラウ
    ザ間の通信を暗号化します。
    8
    ※通信相手のIPアドレス/ドメインは暗号化されません。
    ※通信相手とのデータ通信量はおおまかに予想可能です。

    View Slide

  9. なりすましの防止
    • ドメインを詐称することを防止します。
    9
    認証局のお墨付きにより、通信先のドメイン(場合によって組
    織)が担保される
    example.jp を名乗ってよい
    認証局
    example.jp だよー

    View Slide

  10. なりすましの防止
    • ドメインを詐称することを防止します。
    10
    証明書が無いと example.jp を名乗ってSSL通信することはで
    きない。
    example.jp を名乗ってよい
    認証局
    example.jp だよー
    example.jp だよー
    悪意のある偽物

    View Slide

  11. 改ざん防止
    • データの改ざんを防ぎます。
    11
    データの目録のようなものを一緒に送るので、途中で悪意の
    ある第三者に改ざんされた場合検出ができる。

    View Slide

  12. 裏を返すと、SSLを使わなければ
    盗聴/改ざん/なりすまし
    が可能ということに。
    12

    View Slide

  13. 平文インターネットは全裸闊歩と同義
    SSLのおかげで…
    13

    View Slide

  14. SSLって何?
    • ECサイトや銀行サイトを安心して使える
    • e-Taxで確定申告できる
    • 検索ワードなどが中間者に漏れない
    14

    View Slide

  15. 個人情報だけじゃない、
    インターネット通信のプライバシーを守る
    のがSSLです。
    15

    View Slide

  16. おさらい
    • 平文インターネット通信は危険
    • 暗号化だけじゃないSSLの役割
    • SSLでも完璧じゃないけどかなりの部分は担保
    できる
    16

    View Slide

  17. 17
    WebサイトのSSL化で注意するポイント

    View Slide

  18. WebサイトのSSL化で注意するポイント
    • httpソースのファイルを抹殺する
    • リダイレクトをする
    • サーチコンソールなどの切り替えを忘れない
    18

    View Slide

  19. サイトをSSL化するリスクってあるの?
    19
    httpソースの抹殺とは

    View Slide

  20. httpソースのファイルを抹殺するhttpソースのファイルを抹殺する
    • Mixed content警告→最近は出ない
    • httpソースの読み込みをブロックするので…
    • cssが読み込まれないなどでデザインが崩壊
    • ので…原因切り分けがむずかしい
    20

    View Slide

  21. httpソースのファイルを抹殺するhttpソースのファイルを抹殺する
    • DeveloperToolsで見てみましょう
    • スクリプト系はブロック、画像はそのまま表示
    21
    →詳しくは「mixed content 実例」で一番上に出てくるGoogleさんの記事を読みましょう。

    View Slide

  22. httpソースのファイルをなくすことで
    アドレスバーに鍵マークが表示されます
    22

    View Slide

  23. サイトをSSL化するリスクってあるの?
    23
    リダイレクトの重要性

    View Slide

  24. リダイレクト
    • リダイレクトとは…
    • http://example.jp → https://example.jp
    へ転送すること
    • 自動でやってくれるレンタルサーバもあります。
    ConoHa WINGさん。
    • httpsしか使えないドメインもある(.devとか)
    ※これはこれでブラウザ実装とかしててややこしい
    24

    View Slide

  25. なぜリダイレクトが必要なのか
    25

    View Slide

  26. リダイレクト
    • Googleでhttp://example.jpが登録されている
    →リダイレクト設定しないとhttpsのURLは認識さ
    れない。
    • 301(Moved Permanently)で転送しましょう。
    • 「引っ越しました、お気に入り変更してください」
    は駄目です。(永遠にhttpへアクセスが来る)
    26

    View Slide

  27. 27

    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    よくある .htaccess の書き方

    View Slide

  28. サイトをSSL化するリスクってあるの?
    28
    HSTSというリダイレクト方法

    View Slide

  29. HSTSについて
    • HSTS(HTTP Strict Transport Security)
    • 一度HSTS情報を受け取ったら次からはhttpと
    打っても勝手にhttpsで繋ぐ仕組み
    • サーバ側のリダイレクトと異なりお気に入りを
    変更しなくても2回目以降httpsで接続するので
    セキュア
    29

    View Slide

  30. HSTSについて
    30
    サーバサイドリダイレクトの場合
    http://example.jpでお願い!
    https://example.jpにアクセスして!
    OK、じゃhttpsで!

    View Slide

  31. HSTSについて
    31
    HSTSの場合1回目
    http://example.jpでお願い!
    https://example.jpにアクセスして!
    HSTSリダイレクトは31536000秒キャッ
    シュしていいよ!
    OK、じゃhttpsで!

    View Slide

  32. HSTSについて
    32
    HSTSの場合2回目
    OKじゃhttpsで通信しましょう!
    http://example.jpって入力されたけ
    ど前にアクセスしたときHSTSでhttps
    アクセスしろって言われてたなー。
    じゃ、https://example.jpで!
    ※「前にアクセスした」時にHSTSがあったのでその情報に従っている。

    View Slide

  33. Preload HSTSについて
    33
    HSTSの場合、絶対最初の1回はhttpのアクセスが発生する。
    共有リストとブラウザの実装でこれを回避するのがPreload HSTS。
    あらかじめhttpsでアクセスするサイトをリストに登録しておくと初回から
    httpsでアクセスしてくれる。
    OKじゃhttpsで通信しましょう!
    http://example.jpって入力されたけ
    ど、Preload HSTSのリスト見たらhttps
    の対象になってるなー。
    じゃ、https://example.jpで!
    ※あらかじめhttpsでアクセスすべしリストを読んで予習しているので初回からhttps。

    View Slide

  34. HSTSについて
    • キャッシュするので確認時に問題になることが
    • 対象ドメインは未来永劫httpsしか使わない覚
    悟で設定する。対応が曖昧な場合は避ける
    • ; includeSubDomains をつけると配下ドメインが
    すべてhttpsアクセスに。
    34

    View Slide

  35. HSTS設定時は気をつけて実施しましょう
    35

    View Slide

  36. おさらい
    • 鍵マークのためにMixed contentは完全に解決
    しておく
    • リダイレクトは必ずする
    • HSTSについて知っておく
    36

    View Slide

  37. 37
    WordPressサイトのSSL化で注意するポイント

    View Slide

  38. WordPressサイトのSSL化で注意する点
    • 環境変数HTTPS
    • ブラウザキャッシュ
    38

    View Slide

  39. サイトをSSL化するリスクってあるの?
    39
    環境変数について

    View Slide

  40. 環境変数HTTPS
    • 環境変数HTTPSのon/offでコンテンツURLを出し
    分けているWordPress。
    • これが無いとhttps://example.jp でアクセスした
    ときにデザインが崩れたりする。
    (cssのURLを動的に書き出しているので)
    40

    View Slide

  41. 環境変数ってなに?
    41
    phpinfo(); ?>
    と書いたファイルを置いて
    アクセスすると見れます。

    View Slide

  42. 環境変数HTTPS
    • レンタルサーバの仕様によって無い場合があ

    • さくらのレンタルサーバも2018年4月まではこの
    パターンでした
    42

    View Slide

  43. 環境変数の存在を知ると、
    サーバ引っ越しや色々なサーバを触れる
    時にとっても役に立ちます!
    43

    View Slide

  44. サイトをSSL化するリスクってあるの?
    44
    ブラウザキャッシュに気をつける

    View Slide

  45. ブラウザキャッシュ問題
    SSL化後の確認時に発生するトラブル
    • リダイレクトループ
    • デザイン崩れ
    45

    View Slide

  46. ブラウザキャッシュ問題
    • ほとんどがブラウザキャッシュによるもの
    • 別ブラウザでの確認をおすすめします
    46

    View Slide

  47. おさらい
    • SSL化の際には環境変数要因でデザイン崩れ
    などがありえる
    • SSL化後の確認時はブラウザキャッシュに注意
    47

    View Slide

  48. サイトをSSL化するリスクってあるの?
    48
    サイトをSSL化するリスクってあるの?

    View Slide

  49. サイトをSSL化するリスクってあるの?
    • 設定ミス
    • 失効
    • 更新の手間(更新忘れ)
    • 障害点の追加
    49

    View Slide

  50. サイトをSSL化するリスクってあるの?
    50
    SSL証明書の設定ミス

    View Slide

  51. 設定ミス
    • 設定ミスの場合、最悪サイトが表示されません
    • 中間証明書忘れ、間違いが非常に多い
    51

    View Slide

  52. なぜミスは起きるのか?
    -----BEGIN CERTIFICATE-----
    MIIGDjCCBPagAwIBAgIQNTXQBdLiRBFQHZ/sfHvMhDANBgkqhkiG9w0BA
    QsFADBpMQswCQYDVQQGEwJKUDEqMCgGA1UEChMhSmFwYW4gUmV
    naXN0cnkgU2VydmljZXMgQ28uLCBMdGQuMS4wLAYDVQQDEyVKUFJTIE
    RvbWFpbiBWYWxpZGF0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTE5MDQw
    ODA3MDYwMVoXDTIxMDQzMDE0NTk1OVowIjEgMB4GA1UEAxMXc3Rh
    Z2UxLnNzbC5zYWt1cmEuYWQuanAwggEiMA0GCSqGSIb3DQEBAQUAA4
    IBDwAwggEKAoIBAQDly4gvNMBPt7I/9RpUKF9IEGqiqm9urqr3VYdvflQjb
    gCy56dOmr0ibW9A5vu0HlFGNIshKl+DZIz5UDvKxbzvAqmhCSSrDh18XFIZ
    ezSJy4m0LJnFmBVKnZqrwDZT88C1g6Gh+t3B02Cczy7gQO7vxdkoM/Go+
    hT09RtcB6H4ivGB4A6eDjLi0yanqYl6P+PWqFAfhC/6Q42wOQpTVQW852
    ZElAnTRgzMLobPXcFcHLmC7zrFUDamNady315pDXreYIkeHiACIw/pXyM3
    WNHfgpkiVpIaiW1pdLLqgEPJe2AlMZIb1UchGRAMbWnONXUxWzpshH8c
    jkScNBpfzWBfAgMBAAGjggL3MIIC8zAfBgNVHSMEGDAWgBS7OupXYng
    MMq0fsnv2HQYiluGr8DA9BggrBgEFBQcBAQQxMC8wLQYI
    52

    View Slide

  53. なぜミスは起きるのか?
    • SSL証明書は一目見て何かわからない
    53

    View Slide

  54. 中間証明書って何?
    • SSL証明書は多層構造
    54
    • サーバー証明書
    →サーバに入ってる
    • 中間証明書
    →サーバに入ってる
    • ルート証明書
    →PC(ブラウザ)に入ってる

    View Slide

  55. 中間証明書って何?
    • ルート証明書は中間証明書を、中間証明書は
    サーバ証明書を署名している。
    • 中間を忘れるとルート→サーバとなり署名
    チェーンが成立しない
    • 不正な証明書と見なされてサイトが閲覧できな
    くなる
    55

    View Slide

  56. 中間証明書って何?
    中間証明書は
    とても大事と覚えておいてください!
    56

    View Slide

  57. 中間証明書関連の問題でややこしいポイント
    • 一部のブラウザで一部の証明書を使う場合
    勝手にブラウザが中間証明書を補完する
    • 結果、自分は大丈夫でも他のブラウザでサイト
    が見えない場合がある
    57

    View Slide

  58. 中間証明書関連の問題でややこしいポイント
    • SSLの設定をしたらSSLチェッカーで確認する!
    https://www.ssllabs.com/ssltest/
    58

    View Slide

  59. サイトをSSL化するリスクってあるの?
    59
    スコアを上げる必要はありません!

    View Slide

  60. 無理にA+にしなくてもいい理由
    • 意味がわからないままA+にすると閲覧できな
    いブラウザなどが出てくる
    • トラブル発生時に解決が難しくなる
    • 深刻な問題はブラウザがブロックしてくれる
    60

    View Slide

  61. サイトをSSL化するリスクってあるの?
    61
    失効リスクについて

    View Slide

  62. 失効リスク
    • SSL証明書は失効するとサイトが見えなくなる。
    • 更新忘れというリスクが出てくる。
    • 2年に1度は更新しなければいけない手間。
    ※有料証明書を自動更新できるレンタルサーバもあります。
    62

    View Slide

  63. 失効リスク
    63

    View Slide

  64. 余談ですが…
    無料SSLと有料SSL
    64

    View Slide

  65. さくらのレンタルサーバを例にしますが…
    65
    • 即時発行(30分ぐらい)
    • 自動更新
    • 無料

    View Slide

  66. Let‘sEncryptって何?
    • Let‘sEncrypt=認証局
    • Symantec(=Digicert)やサイバートラスト、
    Global Signなどと同じような組織
    • ただし、非営利
    66

    View Slide

  67. Let‘sEncryptって何?
    67

    View Slide

  68. Let‘sEncryptって何?
    • 無料SSL機能=Let’s Encryptではない
    • レンサバの無料SSL機能でLet’sEncryptの
    認証局を使っているだけ
    68

    View Slide

  69. 余談ですが…
    • 通常無料で利用できるLet’s Encrypt
    • お客様が無料で安心してSSL機能を使うため
    • さくらインターネットはLet’s Encryptのスポン
    サーとなり、年間25,000ドルの寄付を行ってお
    ります。
    69

    View Slide

  70. Let‘sEncryptって何?
    70

    View Slide

  71. 有料の証明書にもメリットはあります
    71

    View Slide

  72. 有料証明書のメリット
    • 2年間更新しなくていい(Let’s Encryptは3ヶ月)
    =更新時のリスクが少ない
    • 組織認証(EV、OV)が選べる
    72
    ※EV証明書

    View Slide

  73. 有料証明書のメリット
    • 証明書の更新=失敗のリスクなので
    回数が少なくリスクが減る
    • アフターサービスの有無(再発行など)
    • サイトシールなどの付加価値
    73

    View Slide

  74. SSL化による新たな障害点の追加
    74

    View Slide

  75. SSL証明書における失効管理
    • 失効=期限切れ
    →期限は証明書に書いてある
    75

    View Slide

  76. 証明書に書いてある

    ブラウザ側の処理でアクセスを遮断できる
    76

    View Slide

  77. 77

    View Slide

  78. 何かしらの事情で有効期間途中で
    失効させなければいけない時はどうする?
    78

    View Slide

  79. 失効リスト色々
    • CRL(Certificate Revocation List)
    • OCSP(Online Certificate Status Protocol)
    • CT(Certificate Transparency)
    (失効リストとはちょっと違うけど…)
    79

    View Slide

  80. サイトをSSL化するリスクってあるの?
    80
    CRLの仕組み

    View Slide

  81. CRL
    81
    失効証明書の全件リストが送られてくるので失効件数が多い
    認証局の証明書を使うとサイトのパフォーマンスが悪くなる
    失効証明書リスト
    このシリアル番号の証
    明書は失効してるよー
    A:リストどうぞ!
    全件だけど
    認証局
    Q:この認証局の
    失効リストくれ!
    CRLエンドポイント

    View Slide

  82. サイトをSSL化するリスクってあるの?
    82
    OCSPの仕組み

    View Slide

  83. OCSP
    83
    CRLの弱点を考慮して、問い合わせに応答するかたちで証明
    書の有効性を検証できる。
    失効証明書リスト
    このシリアル番号の証
    明書は失効してるよー
    A:失効してる
    よ!
    (してないよ!)
    認証局
    Q:この証明書
    失効してない?
    OCSPレスポンダ

    View Slide

  84. さらにOCSPはOCSPステープリングという
    サーバサイドで結果をキャッシュできる
    機能がある
    ブラウザでOCSPレスポンスをキャッシュす
    ることもある
    84

    View Slide

  85. OCSPのキャッシュ機能
    85
    ウェブサイトを配信するサーバにOCSPレスポンスをキャッシュ
    できる場合があり、ボトルネックは解消される
    失効証明書リスト
    このシリアル番号の証
    明書は失効してるよー
    A:失効してる
    よ!
    (してないよ!)
    認証局
    Q:この証明書
    失効してない?
    OCSPレスポンダ
    失効証明書リスト
    (のキャッシュ)
    失効証明書リスト
    (のキャッシュ)

    View Slide

  86. CRLとOCSPの問題点
    • 一部のブラウザは失効リストが検証できないと
    サーバとの通信を開始しない(エラーを返す)
    • つまり、CRLサーバやOCSPレスポンダ障害でサ
    イトが閲覧できなくなるリスクをはらむ。
    • さらに、キャッシュが多いため原因切り分けを
    困難にしている。
    86

    View Slide

  87. ブラウザ別対応状況
    • Google Chrome:EV証明書のみ厳格に検証
    • Firefox:すべての証明書を厳格に検証
    • Edge/IE:すべての証明書を厳格に検証
    87

    View Slide

  88. ブラウザ別対応状況
    • 厳格に検証する場合、検証できないとサイトへ
    のアクセスがブラウザ側で遮断される
    • →サイトが見れない!となる
    88

    View Slide

  89. サイトをSSL化するリスクってあるの?
    89
    CTの仕組み

    View Slide

  90. CTについて
    • CTは失効管理というよりは証明書の発行の
    透明性(Transparency)を担保する
    • CTログサーバに発行状況が記録される
    • 2019年現在、ほぼすべての証明書がCTに記録
    されている
    90

    View Slide

  91. CTログサーバ公開内容
    91

    View Slide

  92. CTについて
    • 特定のドメインの実在を暴露してしまいますの
    で、新サービスのドメイン名を考える時は要注

    • bitcoin.sakura.ad.jp みたいなサブドメインを作
    ると、「さくらがビットコインやるのか!」みたい
    な憶測を生むことにもなります。
    92

    View Slide

  93. おさらい
    • 無料SSL/有料SSLそれぞれにメリット・デメリッ
    トがある。
    • 失効管理を厳密にすると安全性↑可用性↓
    • CTによるドメイン曝露に気をつける
    93

    View Slide

  94. SSLって……ややこしすぎない?
    94

    View Slide

  95. SSLのややこしみ
    基本的にセキュアじゃないインターネット通信を
    強引にセキュアにしているので…
    • 穴がある(通信先が漏れる、リダイレクト等)
    • パフォーマンスが悪い(通信開始まで時間がか
    かる)

    View Slide

  96. SSLのややこしみ
    基本的にパフォーマンスが落ちる仕組みなので
    96
    ブラウザ
    よっしゃ!キャッシュしたろ!
    (リダイレクト、OCSP、失効情報)
    よっしゃ!キャッシュしたろ!
    (OCSP Stapling)
    よっしゃ!キャッシュしなくていいように
    仕組み作ったろ!
    (Preload HSTS、強制httpsドメイン)
    インターネット
    の偉い人たち
    サーバ

    View Slide

  97. サイトをSSL化するリスクってあるの?
    97
    キャッシュやリダイレクトのブラウザ実装などが
    各所にあってややこしい!

    View Slide

  98. SSLに関する知識がしっかりしていないと
    サイトの問題切り分けが難しくなる
    98

    View Slide

  99. おすすめ書籍
    99
    プロフェッショナル SSL/TLS
    https://www.lambdanote.com/products/tls

    View Slide

  100. 最後に
    100

    View Slide

  101. さくらのレンタルサーバ
    SSL
    WordPress
    で注意すること
    101

    View Slide

  102. さくらのレンタルサーバで注意すること
    • 2018年4月より前のノウハウは古い
    • 現在は一般的な設定方法で問題なし
    →環境変数HTTPSが使える
    102

    View Slide

  103. さくらのレンタルサーバで注意すること
    103

    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    よくある書き方でOK!

    View Slide

  104. 最後に
    さくらインターネットからのお願い。
    • WordPressコア・プラグイン・テーマ
    • PHPバージョン
    は常に最新版を使うようにしましょう。安易
    にコアの自動アップデートを停止しないよう
    お願いいたします。
    104

    View Slide

  105. ご清聴ありがとうございました。
    105

    View Slide