Slide 1

Slide 1 text

社内の全環境をhttpsにした話 2017.10.28 Rakuten Technology Conference @morix1500

Slide 2

Slide 2 text

じこしょうかい ・大森翔太(@morix1500) ・株式会社モブキャスト ・インフラエンジニア ・技術ブログやってます!  https://blog.haramishio.xyz/

Slide 3

Slide 3 text

あじぇんだ ・Let's Encryptについて ・社内の全環境をhttpsにしたはなし

Slide 4

Slide 4 text

みなさん、 https対応してますか?

Slide 5

Slide 5 text

高まるhttps対応の波 引用元: https://transparencyreport.google.com/https/overview?hl=ja

Slide 6

Slide 6 text

httpsじゃないとサービス提供できない時代に ・AppleのATS(App Transport Security)  ⇒ そもそも通信ができなくなる ・Chrome62からhttpページで警告が出るように  ⇒ サイトの信頼性が下がる

Slide 7

Slide 7 text

でも… ・証明書って金かかるじゃん? ・なんか発行とかだるそう ・うーんどうしよう

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Let's Encryptとは ・無料で発行できるSSL証明書 ・httpsの普及を目的として作られた ・名だたるスポンサーたち  ⇒ Mozilla/Akamai/Cisco/Chrome etc...

Slide 10

Slide 10 text

Let's Encryptの特徴 ・無料 ・発行/更新が自動で行える ・証明書の有効期限は3ヶ月

Slide 11

Slide 11 text

証明書の発行の仕方(例) # 発行 $ certbot certonly --webroot -w /var/www/html -d example.jp # 更新 $ certbot renew

Slide 12

Slide 12 text

全開発環境の https対応と運用の 自動化を行った!

Slide 13

Slide 13 text

要件 ・開発環境なのでWebサーバーは外部からアクセス不可 ・1プロジェクトにつき20個くらいドメインある ・そのプロジェクトは何個もある ・プロジェクトごとにネットワーク(アカウント)が分かれている

Slide 14

Slide 14 text

採用した方法(アーキテクチャ) Jenkins S3 Route53 EC2 1.証明書リクエスト 2.ワンタイムトークン登録 3.ワンタイムトークン確認 4.証明書発行 5.証明書配置 6.証明書ダウンロード

Slide 15

Slide 15 text

実装 ・LEクライアント  lego(https://github.com/xenolf/lego) ・LE認証方式  DNS-01: 対象ドメインのサブドメインに指定の文字列をTXTレコードに登録しそれ で認証を行うこと

Slide 16

Slide 16 text

LEの制限 ・同一ドメインの証明書発行は1週間に20個まで!  ・下記はすべて同一ドメイン   example.com   sand.example.com   api1.sand.example.com   api2.sand.example.com

Slide 17

Slide 17 text

サブドメインがたくさんある場合は ・SANs(Subject Alternative Names)を使用する  1つの証明書で複数のドメインが対応できる  example.com.crt   -> example.com   -> sand.example.com   -> api1.sand.example.com   -> api2.sand.example.com 1つの証明書が いろんなドメインで使 いまわせる!

Slide 18

Slide 18 text

この仕組みの限界ドメイン数 ・SANsの上限は100ドメインまで ・週に20個まで証明書発行が可能 ・証明書の期限が3ヶ月 ・100 * 20 * 12(week) = 24,000ドメインまで行ける!

Slide 19

Slide 19 text

この仕組みのいいところ ・DNS認証なのでサーバーのIP制限を気にしなくていい ・発行と更新が同じ仕組みなので、  クライアントは証明書をダウンロードするだけでいい ・Jenkinsに発行/更新を集約しているので  更新スケジュールをコントロールしやすい

Slide 20

Slide 20 text

まとめ ・証明書はLet’s Encryptでさくっと作れる ・証明書の発行/更新は自動化できる ・大量のサブドメインがある場合はSANsで対応

Slide 21

Slide 21 text

ワイルドカード来るってよ

Slide 22

Slide 22 text

Let’s Start https!!