■CALENDAR■
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30     
<<前月 2024年04月 次月>>
■LOGIN■
現在のモード: ゲストモード
USER ID:
USER PW:
■ADMIN■
ADMIN ID:
ADMIN PW:
■NEW ENTRIES■
■RECENT COMMENTS■
■RECENT TRACKBACK■
  • 吉本隆明の死去に寄せて - 反「反核」ということ
  • 2010 年の釣り - 2010~11 シーズン開幕! 肝和えの素(カワハギ)
  • 震災後の復興を考える
  • 夏本番ですが ・・・ 水の事故を防ぐために
  • 2011 年の釣り - 遅ればせながらシーズン開幕 東京湾のマゴチ
■CATEGORIES■
■ARCHIVES■
■PROFILE■
■POWERED BY■
BLOGN(ぶろぐん)
BLOGNPLUS(ぶろぐん+)
■OTHER■

openssl req コマンド1発で、秘密鍵(pkey)ファイルとサイト自己証明書(cert)ファイルを生成する手順
UNIX / Linux 環境で、SSL/TLS を利用する際に使用する極めて多機能なコマンド「openssl」は、その多彩な機能を呼び出すために、多くの「サブコマンド」が第1引数として用意されています(なんと man ページもこのサブコマンド毎に用意されている)。
この openssl で、サイト自己証明書を作成しようとするとき、ネットで検索して見つかる手順の多くは、以下のようなものです(わきたもこれまではこの手順によっていました)。
  1. openssl genrsa コマンドで、秘密鍵(pkey)ファイルを生成
  2. openssl req コマンドに1.で生成した秘密鍵ファイルを与えて、サイト証明リクエスト(csr)ファイルを生成

  3. openssl x509 コマンドで2.で生成したサイト証明リクエストファイルに基づいて、自分自身でサイト「自己」証明書(cert)ファイルを生成
この手順の1.~2.は、信頼できる認証局に「ちゃんとした証明書(自己証明書ではない)」を発行してもらう場合と同じ手順です。 これに加えて、本来は認証局が行う3.の手順も自分自身で行うことで、自己証明書を発行する訳です。
先日ネットで自己証明書作成方法について改めて調べていたら、これら手順をひとまとめにして、openssl コマンド1発で、秘密鍵(pkey)ファイルとサイト自己証明書(cert)ファイルを生成する方法があるということが判りました。

以下に、備忘録の意味も含めて整理しておきます。

証明書に含める「証明書識別名(DN)情報」は、予めDN情報設定ファイルに記述しておくこととします。

以下、証明書識別名(DN)情報設定ファイル(mkcrt.conf)の内容
(root)# cat mkcrt.conf ↓
[ req ]
prompt = no
distinguished_name = req_distinguished_name
x509_extensions = v3_req

[ req_distinguished_name ]
C = JP
ST = Tokyo
L = Tama-shi
O = WAKITAs\' family
OU = Home Server
CN = www.wakita.cc

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
DNS.1 =www.wakita.cc
DNS.2 =alims.wakita.cc
DNS.3 =wakita.cc

自己認証証明書ファイルの発行
(openssl req コマンド を使用し、-newkey/-x509 両オプションを指定する)
指定する各オプションの意味
  • -newkey rsa:4096
    csrファイルに加えて、秘密鍵(pkey)ファイルも生成(rsa 4096bit による)

  • -nodes
    生成するpkeyファイルは暗号化しない(=パスフレーズを要しない)

  • -rand /dev/urandom
    pkeyファイル生成に使用する乱数シードとして、乱数発生デバイスファイル(dev/urandom)を指定

  • -keyout ./pkey.pem
    生成する秘密鍵ファイル名(./pkey.pem) ※1

  • -x509
    csrファイルに代えて、証明書(cert)ファイルを(直接)生成

  • -sha256
    certファイルの署名ハッシュアルゴリズムとして sha2 256bit を指定

  • -config ./mkcrt.conf
    certファイルに書き込む証明書識別名(DN)情報を、設定ファイル(./mkcrt.conf)から得る

  • -days `expr \`gd YYYYMMDD\` - \`gd\``
    certファイルに書き込む証明期限を、本日よりYYYYMMDDまでとする(gdコマンド使用)

  • -out ./cert.pem
    生成する自己証明書ファイル名(./cert.pem) ※1

※1:生成するpkeyファイルとcertファイルのファイル名が同一である場合、pkeyとcertがこのファイル一つに同梱される

以下、openssl req コマンドの実行
(root)# openssl req \
-newkey rsa:4096 \
-nodes -rand /dev/urandom \
-keyout ./pkey.pem \
-x509 \
-sha256 \
-config ./mkcrt.conf \
-days `expr \`gd YYYYMMDD\` - \`gd\`` \
-out ./cert.pem ↓

最後に、ファイル生成後、セキュリティを高めるため、パーミッションを変更しておきます。
(root)# chmod 600 ./mkcrt.conf ./pkey.pem ./cert.pem ↓

この生成法でキーとなるのは、openssl の req サブコマンドを、-newkey オプションならびに -x509 オプションを付加して実行する点です。
req サブコマンドは与えられた DN情報に基づいて、認証局に対するリクエスト(csr)ファイルを生成するコマンドです。
これに -newkey オプションを付加することで、csr ファイルに「加えて」、秘密鍵(pkey)ファイルも生成させることができます。
さらに -x509 オプションを付加することで、今度は csr ファイルに「代えて」サイト証明書(cert)ファイルが生成されます。
これら2つのオプションにより、req サブコマンドの本来の動作である csr ファイルの生成は抑制され、その代わりに pkey ファイルと cert ファイルが生成されるという訳です。

以下、openssl req のマニュアルページの抜粋
-newkey arg
This option creates a new certificate request and a new private key. The argument takes one of several forms. rsa:nbits, where nbits is the number of bits, generates an RSA key nbits in size. If nbits is omitted, i.e. -newkey rsa specified, the default key size, specified in the configuration file is used.
<以下 省略>

-x509
This option outputs a self signed certificate instead of a certificate request. This is typically used to generate a test certificate or a self signed root CA. The extensions added to the certificate (if any) are specified in the configuration file. Unless specified using the set_serial option, a large random number will be used for the serial number.
<以下 省略>
| http://blog.wakita.cc/index.php?e=97 |
| サーバ・Linux::ネットワーク | 07:19 PM | comments (0) | trackback (0) |










http://blog.wakita.cc/tb.php/97
PAGE TOP ↑