320.1 OpenSSL

2017-01-26

320.1 OpenSSL

重要度 4
説明 OpenSSLの構成および使用方法を知っていることが求められる。
これには、自分自身の認証局を作成し、さまざまなアプリケーションにSSL証明書を発行する知識も含まれる。
主要な知識範囲

  • 証明書の生成
  • 鍵の生成
  • SSL/TLS クライアントとサーバのテスト

重要なファイル、用語、ユーティリティ

  • openssl
  • RSA, DH 及び DSA
  • SSL
  • X.509
  • CSR
  • CRL

openssl コマンド

OpenSSLコマンドは、証明書の作成のためのコマンドです。 opensslには、サブコマンドがあり、使用方法は、各サブコマンド毎に異なります。
【書式】

  • openssl [サブコマンド] [オプション]
  • openssl [オプション]

openssl サブコマンド

ca CA(証明書)の証明書を管理
dgst メッセージダイジェストを計算
genrsa RSA秘密鍵を生成
req X.509形式の証明書署名要求(CSR)を管理
rsa RSA鍵を管理
x509 X.509証明書データ管理
s_client RSSL/TLSプロトコルを指定して指定サーバーに接続
s_server SSL/TLSプロトコルを使用してデーターを受けるサーバーとして動作

※ x.509…電子証明書やCSL(証明書失効リスト)の標準仕様

openssl genrsa

RSA秘密鍵を生成
オプション

-out [ファイル名] 生成したRSA形式の秘密鍵を出力するァイル名(filename)を指定。指定がない場合は標準出力に表示
-rand [ファイル名]/td> 鍵をランダムデータの元となるファイルを指定
暗号化方法 利用する暗号化の方式(des、des3、idea)。指定がない場合はRSA形式で暗号化される
-des 暗号化にDESを仕様
-des3 暗号化にdes3を仕様
-idea 暗号化にideaを仕様
ビット数 生成する秘密鍵のビット数


2048ビットのdes3での暗号形式のRSA形式の秘密鍵を作成する

$ openssl genrsa -rand rand.dat -out privkey.pem -des3 2048

パスフレーズ無し、2048 ビットの RSA 秘密鍵を生成する
# openssl genrsa out privkey.pem 2048

openssl req

X.509形式の証明書署名要求(CSR)を管理
オプション

-days [日数] X.509の証明書の有効期限を指定
-in [ファイル名] 入力する証明書要求のファイル名を指定。指定がない場合は標準入力で入力
-key [ファイル名] パスフレーズ付き秘密鍵の場合は、パスフレーズを入力する
-new 新規に証明書要求ファイルを作成
-out [ファイル名] 出力する証明書要求のファイル名を指定。指定がない場合は標準出力に表示
-text 証明書要求をテキスト形式で表示
-x509 X.509形式の証明書要求ファイルを作成する


1年間有効のX.509形式の自己署名証明書(CSR)の作成

# openssl req -new -x509 -key myserver.key -out ca.crt -days 365

openssl x509

.509証明書データ管理
オプション

-in [ファイル名] 入力する証明書のファイル名を指定。指定がない場合は標準出力に表示
-out [ファイル名] 出力する証明書のファイル名を指定。指定がない場合は標準出力に表示
-inform [DER|PEM|NET] 入力ファイルの書式
-outform [DER|PEM|NET] 出力ファイルの書式
-days [日数] X.509形式の証明書の有効期限を指定
-text テキスト形式で表示する
-noout 出力ファイルに出力しない


PEM形式⇒DER形式への変換

# openssl x509 -inform PEM -outform DER -in ca.crt -out ca.der

DER形式⇒PEM形式への変換
# openssl x509 -in ca.der -inform DER -out ca.crt -outform PEM

openssl s_client

SSL/TLSプロトコルを指定して指定サーバーに接続
オプション

-connect [ホスト名]:[ポート番号] 指定したホスト名及びポート番号でSSLコネクションをテストする。ホスト名はIPアドレスでも可


SSL/TLSで、www.google.comにポート番号443で接続

# openssl s_client -connect www.google.com:443

openssl dgst

メッセージダイジェストを計算
書式
openssl dgst [-md5|-md4|-md2|-sha]

オプション

-md5 | -md4 | -md2 | -sha1 ダイジェスト関数を選択する


ファイルのmd5ダイジェストを作成します。

# openssl dgst -md5 file

ファイルprikey.pemに格納されている秘密鍵を使用して、ファイルのSHA1ダイジェストに署名します。
# openssl dgst -sha1 -sign prikey.pem -out file.sha1 file

openssl rsa

RSA 秘密鍵の内容を表示


RSA 秘密鍵の内容を表示

# openssl rsa -in private-key.pem -text
Private-Key: (512 bit)
modulus:
00:cf:d7:b2:2b:f2:3b:ea:47:58:0e:63:0e:40:a9:(略)
publicExponent: 65537 (0x10001)
privateExponent:
00:85:34:39:79:d7:30:a2:32:b2:40:7d:09:7b:38:(略)
prime1:
00:f2:02:33:b2:24:ee:f6:01:1e:64:24:2f:dd:29:(略)
prime2:
00:db:db:1b:36:51:2e:e3:88:49:93:cc:aa:85:4d:(略)
exponent1:
00:86:e6:5a:78:8c:93:d2:f7:0d:1b:0e:fc:cb:27:(略)
exponent2:
00:85:34:39:79:d7:30:a2:32:b2:40:7d:09:7b:38:(略)
coefficient:
00:d9:42:f6:06:fb:3a:10:f7:0d:1b:0e:fc:cb:27:(略)
writing RSA key
(略)

# 秘密鍵(private-key)を読み込ませ、-pubout で公開鍵を出力する
$ openssl rsa -in private-key.pem -pubout -out public-key.pem

スポンサーリンク