Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
システム管理者のためのOpenSSL
1
Who is he?
自己紹介
名前
志賀 格(しが・ただす)
所属
ユーザーサイド株式会社
お仕事
お客様企業のネットワークインフラやサーバーの監視や障
害対応
お客様システム管理者のよろず相談
年齢
30歳
16進数で表記しています。
2
このセッションの概要
システム管理者必携のツールとしてのOpenSSLを紹
介する。
SSL/TLSや証明書について少しだけ理解を深める。
3
OpenSSLとは
暗号化通信を行うためのライブラリモジュール
Apache HTTP Serverでも使用している
SSLeayというのがもともとの名前
本体はライブラリモジュールだが、一緒に配布され
るopensslコマンドラインツールが重...
OpenSSLの入手方法(Linux編)
サーバー系のOSとしてインストールするとたいてい
OpenSSLは入っている。
便利な世の中になりました。
CentOS系であれば以下のコマンドにて
# yum install openssl
Debi...
OpenSSLの入手方法(Windows編)
OpenSSLは、オープンソースソフトウェアであり、
商用OSであるWindowsには当然含まれていない。
OpenSSLの本家サイトにあるだろうか?
www.openssl.org にはない。ソー...
入手方法
ApacheHaus
http://www.apachehaus.com
ApacheのWindowsバイナリを配布
本家ではソースコードしか配布していない。
7
入手方法
Stunnel for Windows
http://www.stunnel.org
8
OpenSSLの使い方
起動する。
コマンドプロンプトを起動
“cd c:¥program files(x86)¥stunnel¥bin”
Openssl
OpenSSL> プロンプトが出てくる。
終わらせるときは exit
9
OpenSSLではどんなことができるのか
ヘルプを見るのが手っ取り早い
Help でも ? でも打って enter キーを押す
“req”
CSR(証明書要求ファイル)の作成
“genrsa”
RSA公開鍵を生成
“enc”
暗号化・複号
“d...
素数かどうかを教えてくれる
“prime” というサブコマンドがある
その名の通りで、ある数が素数なのかどうかを回答してく
れる。
例
“prime 17 [Enter]”
“11 is prime” (回答はなぜか16進数)
これが「システム...
一番役に立つと思われる s_client
“s_client” はSSL/TLSのクライアントとして、Web
サーバーなどに接続して結果を得ることができます。
コマンドラインのSSLクライアントなら wget や curl もも
ちろん使えます...
使い方
s_client –connect www.userside.co.jp:443
13
ホスト名
ポート番号
“s_client”は何の役に立つの?
2014年にあったSSL3.0に関するあの話です。
新聞でみたんだけど
プーさんっていう
深刻な虚弱性があるそうじゃないか。
ウチのホームページは大丈夫なのかね。
さっそく調べて報告してくれたまえ。
14
まず行うこと
プーさん→POODLE(プードル)
虚弱性→脆弱性(ぜいじゃくせい)
ホームページ→Webサイト・Webサーバー
その場で訂正したりしないことが重要。
システム管理者として、というより(以下略)
15
POODLEについて
SSL3.0にある深刻な脆弱性がみつかりました。
詳細 IPAのサイト
http://www.ipa.go.jp/security/announce/20141017-ssl.html
この対策としてサーバーにおけるSSL...
こんなときにOpenSSL
SSL3.0しか使えないクライアントであるかのようにふる
まう。
17
s_client –connect www.userside.co.jp:443 –ssl3
この手の調査に使えるオプション
-ssl2
SSL2.0
-tls1
TLS1.0(SSL3.0の後継)
-tls1_1
TLS1.1
-tls1_2
TLS1.2
古いOpenSSLではTLS1.1や1.2は使えないかも。
18
OpenSSLの使い方
今まで対話モードで使ってました。
直接コマンドプロンプトからオプションを使って機
能を利用できる。
19
openssl s_client –connect www.userside.co.jp:443
証明書を取得する
“s_client” の結果をよく見ると、サーバー証明書の情
報も表示されている。
20
---
Certificate chain
0 s:/C=JP/OU=Domain Control Validated/CN=www.u...
証明書をOpenSSLで扱う
以下のようにリダイレクトしてファイルに落とす。
openssl s_client –connect
www.userside.co.jp:443 > c:¥temp¥log.txt
ファイルを開いて証明書部分だけ保...
OpenSSLの設定ファイル
設定しなくても使えるが、
Openssl起動時に /usr/local/ssl/openssl.cnf がないと
怒られる。
Windowsの場合、環境変数 OPENSSL_CONF を指
定してやるとよい。
“s...
OpenSSLでハッシュを扱う
ルーターのファームウェアをダウンロードしたとき
に、ファイルが壊れていないか確認したい。
たとえばヤマハのファームウェア配布ページには
MD5チェックサムがついている。
23
ハッシュについて
ハッシュ関数とかダイジェスト関数という
MD5とかSHA-1はハッシュ関数の名前
あるファイル(データ)を入力として、決まった長
さの(短い)データを出力する。
どんな大きなファイルを入力しても、出力サイズは一定
1ビットでも...
“dgst” コマンドを使ってみる
確認したいファームウェア “rtx1200.bin”
同じサイトで公開されているチェックサム
“rtx1200.md5”
2a9ff798446a7fad3d2eeb14bd7b980f *rtx1200.b...
ApacheのSSL設定を調べる
SSLCipherSuite というディレクティブがある
とあるサーバーの記述
“ALL:!ADH:+HIGH:+MEDIUM:+LOW:+SSLv2”
具体的な暗号アルゴリズムが書いてないので、弱い
暗号が利...
“openssl ciphers” をつかいます
“openssl ciphers –v ALL”
利用できるすべての方式を出力します。
“openssl ciphers –v “ALL:!ADH:!SSLv2”
利用できるすべての方式から、A...
実際に “ciphers” を使った結果
結果の見方
“AES128-SHA SSLv3 Kx=RSA Au=RSA
Enc=AES(128) Mac=SHA1”
一番左側 CipherSuiteという「名前」
SSLv3 というのがプロトコル...
最近の話題から
Chrome45になってTLSで接続できないサイトが少数
ある。
TLSv1.0 への安全でないフォールバックに関する対
策(今のところGoogleだけ)
29
“s_client”コマンドでわかること
オプションを変えてみるとつながらない場合が分か
る。
openssl s_client –connect hogehoge.jp:443 –tls1
これはOK
openssl s_client –co...
終了
OpenSSLというより、システム管理者様のSSLに関する
質問を受け付けたいと思います。
31
Upcoming SlideShare
Loading in …5
×

[data security showcase Sapporo 2015] D27:運用担当者のための OpenSSL 入門 by ユーザーサイド株式会社 志賀格

1,173 views

Published on

Linux サーバー運用で SSL / TLS を必要とすることが当たり前の世の中になってきました。CentOS / Apache という構成での SSLサーバー証明書設定の基本について説明します。さらに、OpenSSLコマンドを使用して、問題になりやすい更新漏れや中間証明書設定ミスを防ぐ方法、CSR作成方法、暗号化方式の変更方法、更新結果の確認方法を解説します。

Published in: Technology
  • Be the first to comment

[data security showcase Sapporo 2015] D27:運用担当者のための OpenSSL 入門 by ユーザーサイド株式会社 志賀格

  1. 1. システム管理者のためのOpenSSL 1
  2. 2. Who is he? 自己紹介 名前 志賀 格(しが・ただす) 所属 ユーザーサイド株式会社 お仕事 お客様企業のネットワークインフラやサーバーの監視や障 害対応 お客様システム管理者のよろず相談 年齢 30歳 16進数で表記しています。 2
  3. 3. このセッションの概要 システム管理者必携のツールとしてのOpenSSLを紹 介する。 SSL/TLSや証明書について少しだけ理解を深める。 3
  4. 4. OpenSSLとは 暗号化通信を行うためのライブラリモジュール Apache HTTP Serverでも使用している SSLeayというのがもともとの名前 本体はライブラリモジュールだが、一緒に配布され るopensslコマンドラインツールが重宝する(今日の お話のメインはここ) 4
  5. 5. OpenSSLの入手方法(Linux編) サーバー系のOSとしてインストールするとたいてい OpenSSLは入っている。 便利な世の中になりました。 CentOS系であれば以下のコマンドにて # yum install openssl Debian系であれば以下のコマンドにて # apt-get install openssl しかし システム管理者は、自分の自由になるLinuxを持っていな いかもしれません。 5
  6. 6. OpenSSLの入手方法(Windows編) OpenSSLは、オープンソースソフトウェアであり、 商用OSであるWindowsには当然含まれていない。 OpenSSLの本家サイトにあるだろうか? www.openssl.org にはない。ソースコードのみの配布。 バイナリ(できればインストーラ)を配布している ところはないだろうか? 6
  7. 7. 入手方法 ApacheHaus http://www.apachehaus.com ApacheのWindowsバイナリを配布 本家ではソースコードしか配布していない。 7
  8. 8. 入手方法 Stunnel for Windows http://www.stunnel.org 8
  9. 9. OpenSSLの使い方 起動する。 コマンドプロンプトを起動 “cd c:¥program files(x86)¥stunnel¥bin” Openssl OpenSSL> プロンプトが出てくる。 終わらせるときは exit 9
  10. 10. OpenSSLではどんなことができるのか ヘルプを見るのが手っ取り早い Help でも ? でも打って enter キーを押す “req” CSR(証明書要求ファイル)の作成 “genrsa” RSA公開鍵を生成 “enc” 暗号化・複号 “dgst” メッセージダイジェスト(ハッシュ)を生成 10
  11. 11. 素数かどうかを教えてくれる “prime” というサブコマンドがある その名の通りで、ある数が素数なのかどうかを回答してく れる。 例 “prime 17 [Enter]” “11 is prime” (回答はなぜか16進数) これが「システム管理の何に役に立つのか」 役に立たないと思います。 11
  12. 12. 一番役に立つと思われる s_client “s_client” はSSL/TLSのクライアントとして、Web サーバーなどに接続して結果を得ることができます。 コマンドラインのSSLクライアントなら wget や curl もも ちろん使えます。 OpenSSLを使うメリットは、SSLやTLSに関する細かい情 報を得たり、制御できることです。 12
  13. 13. 使い方 s_client –connect www.userside.co.jp:443 13 ホスト名 ポート番号
  14. 14. “s_client”は何の役に立つの? 2014年にあったSSL3.0に関するあの話です。 新聞でみたんだけど プーさんっていう 深刻な虚弱性があるそうじゃないか。 ウチのホームページは大丈夫なのかね。 さっそく調べて報告してくれたまえ。 14
  15. 15. まず行うこと プーさん→POODLE(プードル) 虚弱性→脆弱性(ぜいじゃくせい) ホームページ→Webサイト・Webサーバー その場で訂正したりしないことが重要。 システム管理者として、というより(以下略) 15
  16. 16. POODLEについて SSL3.0にある深刻な脆弱性がみつかりました。 詳細 IPAのサイト http://www.ipa.go.jp/security/announce/20141017-ssl.html この対策としてサーバーにおけるSSL3.0の無効化が 推奨されました。 しかし、 ウチのWebサーバがSSL3.0が有効かどうかどうやっ て調べれば… 調べ方はIPAのサイトにはなかった… 16
  17. 17. こんなときにOpenSSL SSL3.0しか使えないクライアントであるかのようにふる まう。 17 s_client –connect www.userside.co.jp:443 –ssl3
  18. 18. この手の調査に使えるオプション -ssl2 SSL2.0 -tls1 TLS1.0(SSL3.0の後継) -tls1_1 TLS1.1 -tls1_2 TLS1.2 古いOpenSSLではTLS1.1や1.2は使えないかも。 18
  19. 19. OpenSSLの使い方 今まで対話モードで使ってました。 直接コマンドプロンプトからオプションを使って機 能を利用できる。 19 openssl s_client –connect www.userside.co.jp:443
  20. 20. 証明書を取得する “s_client” の結果をよく見ると、サーバー証明書の情 報も表示されている。 20 --- Certificate chain 0 s:/C=JP/OU=Domain Control Validated/CN=www.userside.co.jp i:/O=AlphaSSL/CN=AlphaSSL CA - G2 1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2 i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA --- Server certificate -----BEGIN CERTIFICATE----- MIIEvjCCA6agAwIBAgISESGzyXLt7MGw6If1kbfuxGjXMA0GCSqGSIb3DQEBBQUA MC4xETAPBgNVBAoTCEFscGhhU1NMMRkwFwYDVQQDExBBbHBoYVNTTCBDQSAtIEcy MB4XDTE0MDgyMDA4MTM1MVoXDTE1MDkyMDE5MjU0NVowTTELMAkGA1UEBhMCSlAx rzDH+VPevoeQYLtHGgyZF60theBexZ43JPrGEZBwmar/fH+fzkcEU1AoajX5LA3M LZqnZpnQAM5OLoGBpwp670xT -----END CERTIFICATE----- subject=/C=JP/OU=Domain Control Validated/CN=www.userside.co.jp issuer=/O=AlphaSSL/CN=AlphaSSL CA - G2
  21. 21. 証明書をOpenSSLで扱う 以下のようにリダイレクトしてファイルに落とす。 openssl s_client –connect www.userside.co.jp:443 > c:¥temp¥log.txt ファイルを開いて証明書部分だけ保存する。 証明書は “-----BEGIN CERTIFICATE-----” と “-----END CERTIFICATE-----” に挟まれた中にある。 ファイルに保存するときはこの、BEGINの行・ENDの行 を含めて保存する。 中身を見たいときはこうする。 openssl x509 –noout –text < c:¥temp¥cert.cer 21
  22. 22. OpenSSLの設定ファイル 設定しなくても使えるが、 Openssl起動時に /usr/local/ssl/openssl.cnf がないと 怒られる。 Windowsの場合、環境変数 OPENSSL_CONF を指 定してやるとよい。 “set OPENSSL_CONF=“C:¥Program Files(x86)¥stunnel¥conf¥openssl.cnf” 22
  23. 23. OpenSSLでハッシュを扱う ルーターのファームウェアをダウンロードしたとき に、ファイルが壊れていないか確認したい。 たとえばヤマハのファームウェア配布ページには MD5チェックサムがついている。 23
  24. 24. ハッシュについて ハッシュ関数とかダイジェスト関数という MD5とかSHA-1はハッシュ関数の名前 あるファイル(データ)を入力として、決まった長 さの(短い)データを出力する。 どんな大きなファイルを入力しても、出力サイズは一定 1ビットでも入力が異なっていたら、出力結果が異なる という性質があるので、ハッシュ関数の出力で同一性の検 査ができる。 長さは128ビットとか256ビットとか。ハッシュ関数 によってさまざま。 24
  25. 25. “dgst” コマンドを使ってみる 確認したいファームウェア “rtx1200.bin” 同じサイトで公開されているチェックサム “rtx1200.md5” 2a9ff798446a7fad3d2eeb14bd7b980f *rtx1200.bin MD5というアルゴリズム(方式)でハッシュをとっている。 “openssl dgst –md5 rtx1200.bin” “MD5(rtx1200.bin)= 2a9ff798446a7fad3d2eeb14bd7b980f ” 25
  26. 26. ApacheのSSL設定を調べる SSLCipherSuite というディレクティブがある とあるサーバーの記述 “ALL:!ADH:+HIGH:+MEDIUM:+LOW:+SSLv2” 具体的な暗号アルゴリズムが書いてないので、弱い 暗号が利用されているかもしれない。 26
  27. 27. “openssl ciphers” をつかいます “openssl ciphers –v ALL” 利用できるすべての方式を出力します。 “openssl ciphers –v “ALL:!ADH:!SSLv2” 利用できるすべての方式から、ADHとSSLv2は除きます。 27
  28. 28. 実際に “ciphers” を使った結果 結果の見方 “AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1” 一番左側 CipherSuiteという「名前」 SSLv3 というのがプロトコルのバージョン Kx 鍵交換の方法 Au 認証の方式 Enc 暗号化の方式 Mac メッセージ真正性の方式 28
  29. 29. 最近の話題から Chrome45になってTLSで接続できないサイトが少数 ある。 TLSv1.0 への安全でないフォールバックに関する対 策(今のところGoogleだけ) 29
  30. 30. “s_client”コマンドでわかること オプションを変えてみるとつながらない場合が分か る。 openssl s_client –connect hogehoge.jp:443 –tls1 これはOK openssl s_client –connect hogehoge.jp:443 NG “Secure Renegotiation IS NOT supported” と表示さ れているサーバーが問題らしい。 30
  31. 31. 終了 OpenSSLというより、システム管理者様のSSLに関する 質問を受け付けたいと思います。 31

×