社内の全環境をhttpsにした話

561f52667f4da5b27bf9e09bedcb7bbc?s=47 Morix
October 28, 2017

 社内の全環境をhttpsにした話

Created by Shota Omori(@morix1500)
2017-10-28 Rakuten Technology Conference LT

561f52667f4da5b27bf9e09bedcb7bbc?s=128

Morix

October 28, 2017
Tweet

Transcript

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

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

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

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

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

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

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

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

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

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

    example.jp # 更新 $ certbot renew
  12. 全開発環境の https対応と運用の 自動化を行った!

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

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

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

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

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

      -> api1.sand.example.com   -> api2.sand.example.com 1つの証明書が いろんなドメインで使 いまわせる!
  18. この仕組みの限界ドメイン数 ・SANsの上限は100ドメインまで ・週に20個まで証明書発行が可能 ・証明書の期限が3ヶ月 ・100 * 20 * 12(week) =

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

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

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

  22. Let’s Start https!!