Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
今日からはじめるSSLサイト@WordCampHaneda 2019 / wordcampha...
Search
GENKI TANIGUCHI
April 20, 2019
Technology
0
210
今日からはじめるSSLサイト@WordCampHaneda 2019 / wordcamphaneda2019
GENKI TANIGUCHI
April 20, 2019
Tweet
Share
More Decks by GENKI TANIGUCHI
See All by GENKI TANIGUCHI
20250524OkayamaWordPressMeetupそのバックアップ、復元できますか?
gtaniguchi
0
200
WP Zoom Up CMタイムLT-20210910 / wpzoomupcmlt20210910
gtaniguchi
0
46
WP Zoom Up CMタイムLT / wpzoomupcmlt20210513
gtaniguchi
0
68
20201022_レンサバ座談会@Lightning勉強会 / rspaneldiscussion
gtaniguchi
0
60
高コスパ高負荷耐性サイトの作り方 / mtddc-meetup-tokyo-2020-letsusecdn
gtaniguchi
0
200
さくらの夕べ コンテンツブースト機能概要/howtousecontentboost
gtaniguchi
0
12k
レンタルサーバの設定でできるWordPressの高速化 / 20190615_WebPerfomanceSeminor
gtaniguchi
0
710
WordPressを始めよう。サーバーのこと教えて!@WordCamp男木島2018 /tellmeabouttheserver
gtaniguchi
0
1.2k
レンサバを落とさないお付き合いの方法@WordCamp大阪2018
gtaniguchi
2
740
Other Decks in Technology
See All in Technology
Android Studio の 新しいAI機能を試してみよう / Try out the new AI features in Android Studio
yanzm
0
270
LLMエージェント時代に適応した開発フロー
hiragram
1
410
ZOZOTOWNフロントエンドにおけるディレクトリの分割戦略
zozotech
PRO
17
5.4k
知られざるprops命名の慣習 アクション編
uhyo
10
2.5k
第4回 関東Kaggler会 [Training LLMs with Limited VRAM]
tascj
12
1.7k
実践アプリケーション設計 ③ドメイン駆動設計
recruitengineers
PRO
2
200
サービスロボット最前線:ugoが挑むPhysical AI活用
kmatsuiugo
0
190
kintone開発チームの紹介
cybozuinsideout
PRO
0
73k
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
1
240
[CV勉強会@関東 CVPR2025 読み会] MegaSaM: Accurate, Fast, and Robust Structure and Motion from Casual Dynamic Videos (Li+, CVPR2025)
abemii
0
190
[CVPR2025論文読み会] Linguistics-aware Masked Image Modelingfor Self-supervised Scene Text Recognition
s_aiueo32
0
210
アジャイルテストで高品質のスプリントレビューを
takesection
0
120
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Navigating Team Friction
lara
189
15k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Why Our Code Smells
bkeepers
PRO
338
57k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Transcript
WordCamp Haneda 2019 今日からはじめるSSLサイト。SSL化のリスクと対処法。 2019/04/20 (C) Copyright 1996-2016 SAKURA Internet
Inc さくらインターネット株式会社 技術本部レンタルサーバチーム 谷口元紀
自己紹介 2 谷口元紀(たにぐちげんき) 来歴 2016年さくらインターネット入社 2004年からWebディレクターとして制作会社、事業 会社などで勤務 さくらインターネットでのお仕事 レンタルサーバ/SSL ドメイン販売/CDN
のサービス企画等を担当
今日からはじめるSSLサイト 3
本日のお品書き • SSLってそもそも何?何のためにあるの? • WebサイトSSL化のチェックポイント • WordPressサイトだからハマるポイント • SSL化するリスクはあるの? 4
SSLって何? 5
SSLって何? • SSL(Security Sockets Layer)はインターネット上 でデータを暗号化してやり取りする仕組み。 • 現在はTLS(Transport Layer Security)が主流だ
けど、SSLが一般的すぎるので本日は「SSL」で 進めます。 6
SSLって何? • サイト(サーバ)とブラウザの通信を暗号化 • 通信相手を担保(なりすまし防止) • 改ざんの防止 • ブラウザの警告表示防止 7
通信が暗号化される • ウェブサイトのサーバとエンドユーザのブラウ ザ間の通信を暗号化します。 8 ※通信相手のIPアドレス/ドメインは暗号化されません。 ※通信相手とのデータ通信量はおおまかに予想可能です。
なりすましの防止 • ドメインを詐称することを防止します。 9 認証局のお墨付きにより、通信先のドメイン(場合によって組 織)が担保される example.jp を名乗ってよい 認証局 example.jp
だよー
なりすましの防止 • ドメインを詐称することを防止します。 10 証明書が無いと example.jp を名乗ってSSL通信することはで きない。 example.jp を名乗ってよい
認証局 example.jp だよー example.jp だよー 悪意のある偽物
改ざん防止 • データの改ざんを防ぎます。 11 データの目録のようなものを一緒に送るので、途中で悪意の ある第三者に改ざんされた場合検出ができる。
裏を返すと、SSLを使わなければ 盗聴/改ざん/なりすまし が可能ということに。 12
平文インターネットは全裸闊歩と同義 SSLのおかげで… 13
SSLって何? • ECサイトや銀行サイトを安心して使える • e-Taxで確定申告できる • 検索ワードなどが中間者に漏れない 14
個人情報だけじゃない、 インターネット通信のプライバシーを守る のがSSLです。 15
おさらい • 平文インターネット通信は危険 • 暗号化だけじゃないSSLの役割 • SSLでも完璧じゃないけどかなりの部分は担保 できる 16
17 WebサイトのSSL化で注意するポイント
WebサイトのSSL化で注意するポイント • httpソースのファイルを抹殺する • リダイレクトをする • サーチコンソールなどの切り替えを忘れない 18
サイトをSSL化するリスクってあるの? 19 httpソースの抹殺とは
httpソースのファイルを抹殺するhttpソースのファイルを抹殺する • Mixed content警告→最近は出ない • httpソースの読み込みをブロックするので… • cssが読み込まれないなどでデザインが崩壊 • ので…原因切り分けがむずかしい
20
httpソースのファイルを抹殺するhttpソースのファイルを抹殺する • DeveloperToolsで見てみましょう • スクリプト系はブロック、画像はそのまま表示 21 →詳しくは「mixed content 実例」で一番上に出てくるGoogleさんの記事を読みましょう。
httpソースのファイルをなくすことで アドレスバーに鍵マークが表示されます 22
サイトをSSL化するリスクってあるの? 23 リダイレクトの重要性
リダイレクト • リダイレクトとは… • http://example.jp → https://example.jp へ転送すること • 自動でやってくれるレンタルサーバもあります。
ConoHa WINGさん。 • httpsしか使えないドメインもある(.devとか) ※これはこれでブラウザ実装とかしててややこしい 24
なぜリダイレクトが必要なのか 25
リダイレクト • Googleでhttp://example.jpが登録されている →リダイレクト設定しないとhttpsのURLは認識さ れない。 • 301(Moved Permanently)で転送しましょう。 • 「引っ越しました、お気に入り変更してください」
は駄目です。(永遠にhttpへアクセスが来る) 26
27 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule ^(.*)$
https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> よくある .htaccess の書き方
サイトをSSL化するリスクってあるの? 28 HSTSというリダイレクト方法
HSTSについて • HSTS(HTTP Strict Transport Security) • 一度HSTS情報を受け取ったら次からはhttpと 打っても勝手にhttpsで繋ぐ仕組み •
サーバ側のリダイレクトと異なりお気に入りを 変更しなくても2回目以降httpsで接続するので セキュア 29
HSTSについて 30 サーバサイドリダイレクトの場合 http://example.jpでお願い! https://example.jpにアクセスして! OK、じゃhttpsで!
HSTSについて 31 HSTSの場合1回目 http://example.jpでお願い! https://example.jpにアクセスして! HSTSリダイレクトは31536000秒キャッ シュしていいよ! OK、じゃhttpsで!
HSTSについて 32 HSTSの場合2回目 OKじゃhttpsで通信しましょう! http://example.jpって入力されたけ ど前にアクセスしたときHSTSでhttps アクセスしろって言われてたなー。 じゃ、https://example.jpで! ※「前にアクセスした」時にHSTSがあったのでその情報に従っている。
Preload HSTSについて 33 HSTSの場合、絶対最初の1回はhttpのアクセスが発生する。 共有リストとブラウザの実装でこれを回避するのがPreload HSTS。 あらかじめhttpsでアクセスするサイトをリストに登録しておくと初回から httpsでアクセスしてくれる。 OKじゃhttpsで通信しましょう! http://example.jpって入力されたけ
ど、Preload HSTSのリスト見たらhttps の対象になってるなー。 じゃ、https://example.jpで! ※あらかじめhttpsでアクセスすべしリストを読んで予習しているので初回からhttps。
HSTSについて • キャッシュするので確認時に問題になることが • 対象ドメインは未来永劫httpsしか使わない覚 悟で設定する。対応が曖昧な場合は避ける • ; includeSubDomains をつけると配下ドメインが
すべてhttpsアクセスに。 34
HSTS設定時は気をつけて実施しましょう 35
おさらい • 鍵マークのためにMixed contentは完全に解決 しておく • リダイレクトは必ずする • HSTSについて知っておく 36
37 WordPressサイトのSSL化で注意するポイント
WordPressサイトのSSL化で注意する点 • 環境変数HTTPS • ブラウザキャッシュ 38
サイトをSSL化するリスクってあるの? 39 環境変数について
環境変数HTTPS • 環境変数HTTPSのon/offでコンテンツURLを出し 分けているWordPress。 • これが無いとhttps://example.jp でアクセスした ときにデザインが崩れたりする。 (cssのURLを動的に書き出しているので) 40
環境変数ってなに? 41 <? phpinfo(); ?> と書いたファイルを置いて アクセスすると見れます。
環境変数HTTPS • レンタルサーバの仕様によって無い場合があ る • さくらのレンタルサーバも2018年4月まではこの パターンでした 42
環境変数の存在を知ると、 サーバ引っ越しや色々なサーバを触れる 時にとっても役に立ちます! 43
サイトをSSL化するリスクってあるの? 44 ブラウザキャッシュに気をつける
ブラウザキャッシュ問題 SSL化後の確認時に発生するトラブル • リダイレクトループ • デザイン崩れ 45
ブラウザキャッシュ問題 • ほとんどがブラウザキャッシュによるもの • 別ブラウザでの確認をおすすめします 46
おさらい • SSL化の際には環境変数要因でデザイン崩れ などがありえる • SSL化後の確認時はブラウザキャッシュに注意 47
サイトをSSL化するリスクってあるの? 48 サイトをSSL化するリスクってあるの?
サイトをSSL化するリスクってあるの? • 設定ミス • 失効 • 更新の手間(更新忘れ) • 障害点の追加 49
サイトをSSL化するリスクってあるの? 50 SSL証明書の設定ミス
設定ミス • 設定ミスの場合、最悪サイトが表示されません • 中間証明書忘れ、間違いが非常に多い 51
なぜミスは起きるのか? -----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
なぜミスは起きるのか? • SSL証明書は一目見て何かわからない 53
中間証明書って何? • SSL証明書は多層構造 54 • サーバー証明書 →サーバに入ってる • 中間証明書 →サーバに入ってる
• ルート証明書 →PC(ブラウザ)に入ってる
中間証明書って何? • ルート証明書は中間証明書を、中間証明書は サーバ証明書を署名している。 • 中間を忘れるとルート→サーバとなり署名 チェーンが成立しない • 不正な証明書と見なされてサイトが閲覧できな くなる
55
中間証明書って何? 中間証明書は とても大事と覚えておいてください! 56
中間証明書関連の問題でややこしいポイント • 一部のブラウザで一部の証明書を使う場合 勝手にブラウザが中間証明書を補完する • 結果、自分は大丈夫でも他のブラウザでサイト が見えない場合がある 57
中間証明書関連の問題でややこしいポイント • SSLの設定をしたらSSLチェッカーで確認する! https://www.ssllabs.com/ssltest/ 58
サイトをSSL化するリスクってあるの? 59 スコアを上げる必要はありません!
無理にA+にしなくてもいい理由 • 意味がわからないままA+にすると閲覧できな いブラウザなどが出てくる • トラブル発生時に解決が難しくなる • 深刻な問題はブラウザがブロックしてくれる 60
サイトをSSL化するリスクってあるの? 61 失効リスクについて
失効リスク • SSL証明書は失効するとサイトが見えなくなる。 • 更新忘れというリスクが出てくる。 • 2年に1度は更新しなければいけない手間。 ※有料証明書を自動更新できるレンタルサーバもあります。 62
失効リスク 63
余談ですが… 無料SSLと有料SSL 64
さくらのレンタルサーバを例にしますが… 65 • 即時発行(30分ぐらい) • 自動更新 • 無料
Let‘sEncryptって何? • Let‘sEncrypt=認証局 • Symantec(=Digicert)やサイバートラスト、 Global Signなどと同じような組織 • ただし、非営利 66
Let‘sEncryptって何? 67
Let‘sEncryptって何? • 無料SSL機能=Let’s Encryptではない • レンサバの無料SSL機能でLet’sEncryptの 認証局を使っているだけ 68
余談ですが… • 通常無料で利用できるLet’s Encrypt • お客様が無料で安心してSSL機能を使うため • さくらインターネットはLet’s Encryptのスポン サーとなり、年間25,000ドルの寄付を行ってお
ります。 69
Let‘sEncryptって何? 70
有料の証明書にもメリットはあります 71
有料証明書のメリット • 2年間更新しなくていい(Let’s Encryptは3ヶ月) =更新時のリスクが少ない • 組織認証(EV、OV)が選べる 72 ※EV証明書
有料証明書のメリット • 証明書の更新=失敗のリスクなので 回数が少なくリスクが減る • アフターサービスの有無(再発行など) • サイトシールなどの付加価値 73
SSL化による新たな障害点の追加 74
SSL証明書における失効管理 • 失効=期限切れ →期限は証明書に書いてある 75
証明書に書いてある = ブラウザ側の処理でアクセスを遮断できる 76
77
何かしらの事情で有効期間途中で 失効させなければいけない時はどうする? 78
失効リスト色々 • CRL(Certificate Revocation List) • OCSP(Online Certificate Status Protocol)
• CT(Certificate Transparency) (失効リストとはちょっと違うけど…) 79
サイトをSSL化するリスクってあるの? 80 CRLの仕組み
CRL 81 失効証明書の全件リストが送られてくるので失効件数が多い 認証局の証明書を使うとサイトのパフォーマンスが悪くなる 失効証明書リスト このシリアル番号の証 明書は失効してるよー A:リストどうぞ! 全件だけど 認証局
Q:この認証局の 失効リストくれ! CRLエンドポイント
サイトをSSL化するリスクってあるの? 82 OCSPの仕組み
OCSP 83 CRLの弱点を考慮して、問い合わせに応答するかたちで証明 書の有効性を検証できる。 失効証明書リスト このシリアル番号の証 明書は失効してるよー A:失効してる よ! (してないよ!)
認証局 Q:この証明書 失効してない? OCSPレスポンダ
さらにOCSPはOCSPステープリングという サーバサイドで結果をキャッシュできる 機能がある ブラウザでOCSPレスポンスをキャッシュす ることもある 84
OCSPのキャッシュ機能 85 ウェブサイトを配信するサーバにOCSPレスポンスをキャッシュ できる場合があり、ボトルネックは解消される 失効証明書リスト このシリアル番号の証 明書は失効してるよー A:失効してる よ! (してないよ!)
認証局 Q:この証明書 失効してない? OCSPレスポンダ 失効証明書リスト (のキャッシュ) 失効証明書リスト (のキャッシュ)
CRLとOCSPの問題点 • 一部のブラウザは失効リストが検証できないと サーバとの通信を開始しない(エラーを返す) • つまり、CRLサーバやOCSPレスポンダ障害でサ イトが閲覧できなくなるリスクをはらむ。 • さらに、キャッシュが多いため原因切り分けを 困難にしている。
86
ブラウザ別対応状況 • Google Chrome:EV証明書のみ厳格に検証 • Firefox:すべての証明書を厳格に検証 • Edge/IE:すべての証明書を厳格に検証 87
ブラウザ別対応状況 • 厳格に検証する場合、検証できないとサイトへ のアクセスがブラウザ側で遮断される • →サイトが見れない!となる 88
サイトをSSL化するリスクってあるの? 89 CTの仕組み
CTについて • CTは失効管理というよりは証明書の発行の 透明性(Transparency)を担保する • CTログサーバに発行状況が記録される • 2019年現在、ほぼすべての証明書がCTに記録 されている 90
CTログサーバ公開内容 91
CTについて • 特定のドメインの実在を暴露してしまいますの で、新サービスのドメイン名を考える時は要注 意 • bitcoin.sakura.ad.jp みたいなサブドメインを作 ると、「さくらがビットコインやるのか!」みたい な憶測を生むことにもなります。
92
おさらい • 無料SSL/有料SSLそれぞれにメリット・デメリッ トがある。 • 失効管理を厳密にすると安全性↑可用性↓ • CTによるドメイン曝露に気をつける 93
SSLって……ややこしすぎない? 94
SSLのややこしみ 基本的にセキュアじゃないインターネット通信を 強引にセキュアにしているので… • 穴がある(通信先が漏れる、リダイレクト等) • パフォーマンスが悪い(通信開始まで時間がか かる)
SSLのややこしみ 基本的にパフォーマンスが落ちる仕組みなので 96 ブラウザ よっしゃ!キャッシュしたろ! (リダイレクト、OCSP、失効情報) よっしゃ!キャッシュしたろ! (OCSP Stapling) よっしゃ!キャッシュしなくていいように
仕組み作ったろ! (Preload HSTS、強制httpsドメイン) インターネット の偉い人たち サーバ
サイトをSSL化するリスクってあるの? 97 キャッシュやリダイレクトのブラウザ実装などが 各所にあってややこしい!
SSLに関する知識がしっかりしていないと サイトの問題切り分けが難しくなる 98
おすすめ書籍 99 プロフェッショナル SSL/TLS https://www.lambdanote.com/products/tls
最後に 100
さくらのレンタルサーバ SSL WordPress で注意すること 101
さくらのレンタルサーバで注意すること • 2018年4月より前のノウハウは古い • 現在は一般的な設定方法で問題なし →環境変数HTTPSが使える 102
さくらのレンタルサーバで注意すること 103 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule
^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> よくある書き方でOK!
最後に さくらインターネットからのお願い。 • WordPressコア・プラグイン・テーマ • PHPバージョン は常に最新版を使うようにしましょう。安易 にコアの自動アップデートを停止しないよう お願いいたします。 104
ご清聴ありがとうございました。 105