WordCamp Haneda 2019今日からはじめるSSLサイト。SSL化のリスクと対処法。2019/04/20(C) Copyright 1996-2016 SAKURA Internet Incさくらインターネット株式会社 技術本部レンタルサーバチーム 谷口元紀
View Slide
自己紹介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
17WebサイトのSSL化で注意するポイント
WebサイトのSSL化で注意するポイント• httpソースのファイルを抹殺する• リダイレクトをする• サーチコンソールなどの切り替えを忘れない18
サイトをSSL化するリスクってあるの?19httpソースの抹殺とは
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
27RewriteEngine OnRewriteCond %{HTTPS} !onRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]よくある .htaccess の書き方
サイトをSSL化するリスクってあるの?28HSTSというリダイレクト方法
HSTSについて• HSTS(HTTP Strict Transport Security)• 一度HSTS情報を受け取ったら次からはhttpと打っても勝手にhttpsで繋ぐ仕組み• サーバ側のリダイレクトと異なりお気に入りを変更しなくても2回目以降httpsで接続するのでセキュア29
HSTSについて30サーバサイドリダイレクトの場合http://example.jpでお願い!https://example.jpにアクセスして!OK、じゃhttpsで!
HSTSについて31HSTSの場合1回目http://example.jpでお願い!https://example.jpにアクセスして!HSTSリダイレクトは31536000秒キャッシュしていいよ!OK、じゃhttpsで!
HSTSについて32HSTSの場合2回目OKじゃhttpsで通信しましょう!http://example.jpって入力されたけど前にアクセスしたときHSTSでhttpsアクセスしろって言われてたなー。じゃ、https://example.jpで!※「前にアクセスした」時にHSTSがあったのでその情報に従っている。
Preload HSTSについて33HSTSの場合、絶対最初の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
37WordPressサイトの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化するリスクってあるの?50SSL証明書の設定ミス
設定ミス• 設定ミスの場合、最悪サイトが表示されません• 中間証明書忘れ、間違いが非常に多い51
なぜミスは起きるのか?-----BEGIN CERTIFICATE-----MIIGDjCCBPagAwIBAgIQNTXQBdLiRBFQHZ/sfHvMhDANBgkqhkiG9w0BAQsFADBpMQswCQYDVQQGEwJKUDEqMCgGA1UEChMhSmFwYW4gUmVnaXN0cnkgU2VydmljZXMgQ28uLCBMdGQuMS4wLAYDVQQDEyVKUFJTIERvbWFpbiBWYWxpZGF0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTE5MDQwODA3MDYwMVoXDTIxMDQzMDE0NTk1OVowIjEgMB4GA1UEAxMXc3RhZ2UxLnNzbC5zYWt1cmEuYWQuanAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDly4gvNMBPt7I/9RpUKF9IEGqiqm9urqr3VYdvflQjbgCy56dOmr0ibW9A5vu0HlFGNIshKl+DZIz5UDvKxbzvAqmhCSSrDh18XFIZezSJy4m0LJnFmBVKnZqrwDZT88C1g6Gh+t3B02Cczy7gQO7vxdkoM/Go+hT09RtcB6H4ivGB4A6eDjLi0yanqYl6P+PWqFAfhC/6Q42wOQpTVQW852ZElAnTRgzMLobPXcFcHLmC7zrFUDamNady315pDXreYIkeHiACIw/pXyM3WNHfgpkiVpIaiW1pdLLqgEPJe2AlMZIb1UchGRAMbWnONXUxWzpshH8cjkScNBpfzWBfAgMBAAGjggL3MIIC8zAfBgNVHSMEGDAWgBS7OupXYngMMq0fsnv2HQYiluGr8DA9BggrBgEFBQcBAQQxMC8wLQYI52
なぜミスは起きるのか?• 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と有料SSL64
さくらのレンタルサーバを例にしますが…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化するリスクってあるの?80CRLの仕組み
CRL81失効証明書の全件リストが送られてくるので失効件数が多い認証局の証明書を使うとサイトのパフォーマンスが悪くなる失効証明書リストこのシリアル番号の証明書は失効してるよーA:リストどうぞ!全件だけど認証局Q:この認証局の失効リストくれ!CRLエンドポイント
サイトをSSL化するリスクってあるの?82OCSPの仕組み
OCSP83CRLの弱点を考慮して、問い合わせに応答するかたちで証明書の有効性を検証できる。失効証明書リストこのシリアル番号の証明書は失効してるよー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化するリスクってあるの?89CTの仕組み
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/TLShttps://www.lambdanote.com/products/tls
最後に100
さくらのレンタルサーバSSLWordPressで注意すること101
さくらのレンタルサーバで注意すること• 2018年4月より前のノウハウは古い• 現在は一般的な設定方法で問題なし→環境変数HTTPSが使える102
さくらのレンタルサーバで注意すること103RewriteEngine OnRewriteCond %{HTTPS} !onRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]よくある書き方でOK!
最後にさくらインターネットからのお願い。• WordPressコア・プラグイン・テーマ• PHPバージョンは常に最新版を使うようにしましょう。安易にコアの自動アップデートを停止しないようお願いいたします。104
ご清聴ありがとうございました。105