30分で理解するLet's Encryptの仕組みとSSL証明書の使い方

2018/3/3

さくらインターネット株式会社

コミュニティマネージャー

法林 浩之(C) Copyright 1996-2017 SAKURA Internet Inc

はじめに

本日の資料はこちらで公開します
https://www.slideshare.net/hourin/

もしくは「slideshare 法林」で検索
2

私について法林 浩之@hourin

写真どんな人？
・フリーランスエンジニア
・さくらインターネット コミュニティマネージャー- 会社主催イベントの運営- 社外イベント対応(協賛/出展/登壇/取材など)- [New!] さくらのナレッジ 編集長
・日本UNIXユーザ会 幹事 (元会長)- さまざまなコミュニティと共同でイベントを開催
・くわしくは「法林浩之」で検索

3

SNSへの投稿、大歓迎です！

#さくらのイベント

4

さくらインターネットについて
商号

代表取締役

大阪本社（梅田/大阪）

東京支社（西新宿）

さくらインターネット株式会社（SAKURA Internet Inc.）

田中 邦裕

設立

1999年8月17日（サービス開始：1996年12月23日）

資本金22億5,692万円

事業内容

インターネットでのサーバの設置およびその管理業務
電気通信事業法に基づく電気通信事業
マルチメディアの企画並びに製作・販売

従業員数495名（連結/2017年3月末）

所属団体

特定非営利活動法人 日本データセンター協会（JDCC）
社団法人 コンピュータソフトウェア協会（CSAJ）
社団法人 日本ネットワークインフォメーションセンター（JPNIC）
社団法人 インターネットプロバイダー協会（JAIPA）

グループ会社

株式会社Joe’sクラウドコンピューティング
ゲヒルン株式会社
株式会社S2i
アイティーエム株式会社
櫻花移動電信有限公司
ビットスター株式会社

福岡オフィス（赤坂）5さくらインターネットの事業領域
VPS・クラウド

レンタルサーバ

さくらのレンタルサーバ
さくらのマネージドサーバ
1台のサーバを複数の契約者でサーバを共有または占有することができ、管理はさくらインターネットに任せて使うサービス

1台を共有

専用サーバ

さくらの VPS
仮想化技術を用い、1台の物理サーバ上に複数の仮想サーバを構築し、仮想専用サーバとして分けた領域の占有サービス

1台を占有

データセンター

新サービス

ハウジング

通信環境とデータの保存や処理システムを一体型で提供するIoTプラットフォーム・サービス

リモートハウジング
高性能サーバと拡張性の高いネットワークを圧倒的なコストパ
フォーマンスで利用できるIaaS型パブリック・クラウド・サービス

高性能で拡張性と信頼性の高いサーバをまるごと独占して利用することができ、自由にカスタマイズして利用可能なサービス

データセンター内にお客様専用のハウジングスペースを確保し、ネットワーク機器やサーバなどの機材を自由に置けるサービ
ス

1台～複数台Dockerコンテナをマネージドされた環境へ、手軽・シンプルにプロビジョニング可能なサービス【サービスの主な利用用途】
ウェブサイト運営、ブログ、インターネット・メール
ネットビジネス、電子商取引、動画・音楽配信、開発環境
エンタープライズ
会員制サイト、キャンペーン・サイト
SNS、ウェブ・アプリケーション、SaaS、ASP

機械学習、データ解析、高精度シミュレー
ション用途に特化したGPU搭載の専用サー
バサービス

新しい社会のインフラを支えながら、最先端のサービスを構築
6

どんな話をするのか• HTTPによる通信の仕組み• HTTPSによる通信の仕組み• Let’s Encryptについて• さくらのサーバでLet’s Encrypt• 有料のSSL証明書が必要なケース
7

HTTPによる通信の仕組み
8HTTPによる通信の仕組み

インターネット回線

ユーザ

ブラウザ
(PC/スマホ)?
ウェブサーバ9HTTPによる通信の仕組み

最近はHTTPでアクセスするとブラウザに「保護されていません」と表示される
10

HTTPによる通信の仕組み

最近はHTTPでアクセスするとブラウザに「保護されていません」と表示される
11

HTTPによる通信の仕組み

パスワード形式のフォームに入力した文字はブラウザには表示されない
12

HTTPによる通信の仕組み入力された値が変数に設定されてWebサーバに送信される
13

HTTPによる通信内容の解析世界でもっとも使われている
ネットワーク・プロトコル・アナライザ
https://www.wireshark.org/
これを使ってHTTPによる通信内容を解析
14

HTTPによる通信内容の解析

tcpdump 'tcp dst port 80 and(tcp[((tcp[12:1] & 0xf0) >> 2):4] =0x504f5354)' -w post.dat
HTTPのPOSTメソッドで送付されるデータをtcpdumpコマンドで収集http://memo-off.blogspot.jp/2016/02/tcpdumphttp.html
https://qiita.com/genreh/items/cc73ade2c115ee96b22a
15

HTTPによる通信内容の解析

16

HTTPによる通信内容の解析

17

HTTPによる通信は暗号化されていない

インターネット回線

HTTP
ユーザ

ブラウザ
(PC/スマホ)ウェブサーバ18

HTTPSによる通信の仕組み
19

HTTPとHTTPS• HTTP• Hypertext Transfer Protocol• RFC 7230 などで策定• HTTPS• Hypertext Transfer Protocol Secure• SSL/TLSで提供されるセキュアな接続上でのHTTP• RFC 2818などで策定
20

SSLとTLS• SSL• Secure Sockets Layer• ユーザとWebサイトの通信を暗号化する仕組み• 脆弱性があるため使わない方がよい• TLS• Transport Layer Security• SSLの後継プロトコル• 現在は主にこちらが使われている• SSLという単語が有名になってしまったので、今でもこれらを総称してSSLと呼ばれる
21

HTTPSによる通信の仕組み
 ブラウザ：SSL通信をリクエスト サーバ：サーバ証明書と公開鍵を送付
 ブラウザ：受け取った証明書の公開鍵を使って共通鍵を暗号化し、サーバに送付
 サーバ：受け取った共通鍵を、秘密鍵を使って復号
 ブラウザ/サーバ：一致した共通鍵を使って送受信するデータを暗号/復号して暗号化通信を成立
 詳しくは「さくらのSSLコラム」を参照
https://ssl.sakura.ad.jp/column/ssl/
22

CA(認証局)• CA(認証局)
サーバ証明書の有効/無効の確認

CA

サーバ証明書の申請/発行• Certificate Authority• SSL証明書を発行する組織• CAの役割
クライアント

SSLによる暗号化通信

サーバ• 対サーバ：SSL証明書の申請/発行• 対クライアント：SSL証明書の有効/無効の確認
23

CA(認証局)

SSL証明書を見ると、どの認証局が認証したかがわかる

24

Let’s Encryptについて
25

SSL証明書の問題点• 証明書の発行が有償で、しかも高い• 年額数万円とか• しかも毎年更新が必要• 特に財政基盤のない非営利組織にはつらい• よって証明書の導入が進まない• 証明書の更新が自動化されていない• 証明書には有効期限がある• 手動で更新するのは面倒• 更新を忘れて期限切れになることも26

そこでLet’s Encrypt

無料で証明書を発行する認証局証明書の自動更新に対応
https://letsencrypt.org/ (公式サイト)
https://letsencrypt.jp/ (非公式日本語サイト)
27

証明書の自動発行の仕組み(ACMEプロトコル)

https://knowledge.sakura.ad.jp/5573/

28

Let’s Encryptの設定(概略)• サーバをDNSに登録• Certbotクライアントをサーバにインストール• 大半のUNIX系OSはパッケージ管理ツールでインストール可能• 詳細：https://letsencrypt.jp/usage/install-certbot.html• certbotコマンドにて証明書の取得を実行• メールアドレス、ドメイン名などを指定• 正常終了すると証明書がサーバに設置される• 参考：ネコでもわかる！さくらのVPS講座 ～第六回「無料SSL証明書 Let’sEncryptを導入しよう」• https://knowledge.sakura.ad.jp/10534/
29

Let’s Encryptの自動更新設定• Let’s Encryptが発行する証明書の有効期間は90日• 最低3か月に1回は更新の必要あり• certbotコマンドで証明書の有効期限チェックや更新が可能• 残り有効期間が30日未満だったら証明書を更新• certbotコマンドを定期実行するようにcronで設定しておけばずっと自動更新される
30

Let’s Encryptの開発• ISRG (Internet Security Research Group) が運営• 無料SSL証明書のため証明書発行による収入なし• 多数のスポンサーが支援• https://letsencrypt.org/sponsors/• さくらインターネットもスポンサーに• 個人でも寄付ができる• https://letsencrypt.org/donate/31

さくらのサーバでLet’s Encrypt32

さくらのサーバでLet’s Encrypt
VPS・クラウド

レンタルサーバ

さくらのレンタルサーバ
さくらのマネージドサーバ
1台のサーバを複数の契約者でサーバを共有または占有することができ、管理はさくらインターネットに任せて使うサービス

1台を共有

専用サーバ

さくらの VPS
仮想化技術を用い、1台の物理サーバ上に複数の仮想サーバを構築し、仮想専用サーバとして分けた領域の占有サービス

1台を占有

データセンター

新サービス

ハウジング

通信環境とデータの保存や処理システムを一体型で提供するIoTプラットフォーム・サー
ビス

リモートハウジング
高性能サーバと拡張性の高いネットワークを圧倒的なコストパフォーマンスで利用できるIaaS型パブリック・クラウド・サービス

高性能で拡張性と信頼性の高いサーバをまるごと独占して利用することができ、自由にカスタマイズして利用可能なサービス

データセンター内にお客様専用のハウジングスペースを確保し、ネットワーク機器やサーバなどの機材を自由に置けるサービ
ス

1台～複数台Dockerコンテナをマネージドされた環境へ、手軽・シンプルにプロビジョニング可能なサービス【サービスの主な利用用途】
ウェブサイト運営、ブログ、インターネット・メール
ネットビジネス、電子商取引、動画・音楽配信、開発環境
エンタープライズ
会員制サイト、キャンペーン・サイト
SNS、ウェブ・アプリケーション、SaaS、ASP

機械学習、データ解析、高精度シミュレー
ション用途に特化したGPU搭載の専用サー
バサービス

さくらのレンタルサーバ、さくらのVPS、さくらのクラウドでLet’s Encryptを簡単に利用できる33

さくらのレンタルサーバでの利用

さくらのレンタルサーバではコントロールパネルで簡単に設定可能
34

さくらのレンタルサーバでの作業手順• さくらのレンタルサーバを契約• ドメインを用意• さくらのレンタルサーバのコントロールパネルで設定• 全体で数時間もあれば自動更新も含めて設定完了
35

コントロールパネルでの作業

コントロールパネルにログイン
36

コントロールパネルでの作業

左側メニューから「ドメイン/SSL設定」を選択
37

コントロールパネルでの作業

設定したいドメインのSSL証明書「登録」をクリック
38

コントロールパネルでの作業「無料SSL設定へ進む」をクリック
39

コントロールパネルでの作業「無料SSLを設定する」をクリックとLet’s Encryptが設定される

40

動作確認

設定が完了したらメールが届くのでhttps://ドメイン名/ にアクセスして確認
41

さくらのVPS/さくらのクラウドでの利用

スタートアップスクリプトを利用することでLet’s Encrypt設定済みのサーバを作成可能
42

スタートアップスクリプトとは• サーバ作成時にシェルスクリプトを実行する機能• 用途例• アプリケーションがインストール済みのサーバを作る• サーバ内の各種設定を自動的に行う• 多数のユーザを登録したサーバを作る• さくらインターネットでスクリプトを多数公開• 自分でスクリプトを作成して使うことも可能• 詳細• VPS：https://vps-news.sakura.ad.jp/startupscripts/• クラウド：https://manual.sakura.ad.jp/cloud/startup-script/
43

さくらのVPSにおける利用方法• さくらのVPSのサーバを契約• さくらのVPSのコントロールパネルにログイン• サーバを指定しメニューから「OSインストール」を選択
44

さくらのVPSにおける利用方法• インストールするOSはCentOS 7を選択
• スタートアップスクリプトとしてCentOS_LetsEncryptを選択し、ドメイン名とメールアドレスを設定• 実行するとCentOS 7上にnginxとLet’s Encryptが設定されたサーバが作られる(証明書の自動更新も設定済み)
45

さくらのクラウドにおける利用方法

さくらのクラウドにログインし、APIキー作成画面に移動
46

さくらのクラウドにおける利用方法

APIキーの名前を設定して作成
47

さくらのクラウドにおける利用方法

サーバ作成画面に移動
スタートアップスクリプトを利用する場合は右上の【シンプルモード】のチェックを外す48

さくらのクラウドにおける利用方法

スタートアップ
スクリプトの種類として【shell】を選び、配置するスタートアップスクリプトとして【Let’s Encrypt】を選択

49

さくらのクラウドにおける利用方法

DNSゾーン名、サーバのドメイン、メールアドレス、APIキーを設定してサーバを作成
50

有料のSSL証明書が必要なケース
51

証明書には認証レベルがある• ドメイン認証(DV)（認証レベル1）• ドメイン名の所有権のみを確認• 企業認証(OV)（認証レベル2）• ドメインに加えWebサイトを運営する組織の実在性を確認• EV認証（認証レベル3）• 法的・物理的に組織の実在性を確認• 証明書自体の暗号強度は同じ
52

有料の証明書が必要なケース• Let’s Encryptはドメイン認証• より高い認証レベルを得たい場合は有料の証明書が必要• Let’s Encryptはワイルドカード証明書には未対応(対応予定あり)• ワイルドカード証明書：サブドメインを含めた証明書• ワイルドカード証明書が欲しい場合も有料の証明書が必要
53

有料のSSL証明書もさくらで54

まとめ55

どんな話をするのか• HTTPによる通信の仕組み• HTTPSによる通信の仕組み• Let’s Encryptについて• さくらのサーバでLet’s Encrypt• 有料の証明書が必要なケース
56

参考情報
57

さくらのSSLコラム

基本の理解から最新情報まで、初心者にも上級者にも役立つコラムを掲載
https://ssl.sakura.ad.jp/column/
58

全国でさくらのイベントを！

• さくらのイベントを全国で開催したい！
• さくらの各種サービスのハンズオン• sakura.io / さくらのクラウド など• さくらの夕べ / さくらクラブ など…

• 協力者求む！
• 会場の提供• 参加者集め• 各種コミュニティとの共催も可• 連絡先：sakura-club@sakura.ad.jp59そこに、さくら60