Created by Shota Omori(@morix1500) 2017-10-28 Rakuten Technology Conference LT
社内の全環境をhttpsにした話2017.10.28Rakuten Technology Conference@morix1500
View Slide
じこしょうかい・大森翔太(@morix1500)・株式会社モブキャスト・インフラエンジニア・技術ブログやってます! https://blog.haramishio.xyz/
あじぇんだ・Let's Encryptについて・社内の全環境をhttpsにしたはなし
みなさん、https対応してますか?
高まるhttps対応の波引用元: https://transparencyreport.google.com/https/overview?hl=ja
httpsじゃないとサービス提供できない時代に・AppleのATS(App Transport Security) ⇒ そもそも通信ができなくなる・Chrome62からhttpページで警告が出るように ⇒ サイトの信頼性が下がる
でも…・証明書って金かかるじゃん?・なんか発行とかだるそう・うーんどうしよう
Let's Encryptとは・無料で発行できるSSL証明書・httpsの普及を目的として作られた・名だたるスポンサーたち ⇒ Mozilla/Akamai/Cisco/Chrome etc...
Let's Encryptの特徴・無料・発行/更新が自動で行える・証明書の有効期限は3ヶ月
証明書の発行の仕方(例)# 発行$ certbot certonly --webroot -w /var/www/html -d example.jp# 更新$ certbot renew
全開発環境のhttps対応と運用の自動化を行った!
要件・開発環境なのでWebサーバーは外部からアクセス不可・1プロジェクトにつき20個くらいドメインある・そのプロジェクトは何個もある・プロジェクトごとにネットワーク(アカウント)が分かれている
採用した方法(アーキテクチャ)JenkinsS3Route53EC21.証明書リクエスト2.ワンタイムトークン登録3.ワンタイムトークン確認4.証明書発行5.証明書配置6.証明書ダウンロード
実装・LEクライアント lego(https://github.com/xenolf/lego)・LE認証方式 DNS-01: 対象ドメインのサブドメインに指定の文字列をTXTレコードに登録しそれで認証を行うこと
LEの制限・同一ドメインの証明書発行は1週間に20個まで! ・下記はすべて同一ドメイン example.com sand.example.com api1.sand.example.com api2.sand.example.com
サブドメインがたくさんある場合は・SANs(Subject Alternative Names)を使用する 1つの証明書で複数のドメインが対応できる example.com.crt -> example.com -> sand.example.com -> api1.sand.example.com -> api2.sand.example.com1つの証明書がいろんなドメインで使いまわせる!
この仕組みの限界ドメイン数・SANsの上限は100ドメインまで・週に20個まで証明書発行が可能・証明書の期限が3ヶ月・100 * 20 * 12(week) = 24,000ドメインまで行ける!
この仕組みのいいところ・DNS認証なのでサーバーのIP制限を気にしなくていい・発行と更新が同じ仕組みなので、 クライアントは証明書をダウンロードするだけでいい・Jenkinsに発行/更新を集約しているので 更新スケジュールをコントロールしやすい
まとめ・証明書はLet’s Encryptでさくっと作れる・証明書の発行/更新は自動化できる・大量のサブドメインがある場合はSANsで対応
ワイルドカード来るってよ
Let’sStart https!!