OpenSSL 資料一覧

openssl.cnfの設定項目

2007/10/23更新

対応バージョン: 0.9.8g

openssl.cnfは階層分けされた構造になっている。

何に関する設定かは`[]'で囲まれた名前で示され、その下に具体的な設定が記述される形式になっている。

openssl.cnfは基本的にデフォルトのままでよいが、いくつか変更する可能性のある項目があるのでその部分を中心に説明する。

caセクション

このセクションではデフォルトCAの設定を指定する。

ここではさらにCA_defaultというサブセクションが指定されており、そこに実際の設定を記述する。

31  [ ca ]
32  default_ca      = CA_default            # The default ca section

複数の設定を使い分けたい場合は別のサブセクション(例:CA_alternative)を作り、その下に設定を記述しておいて、必要に応じてcaセクションのdefault_caの値を変えればよい。

CA_defaultサブセクション

このセクションではdirでCAの情報が格納されているディレクトリを指定する。

デフォルトは「./demoCA」となっている。

ここではこの設定をFedora Coreのデフォルトディレクトリである/etc/pki/CAに変更するものとして説明する。

35 [ CA_default ]
36
37 dir             = ./demoCA              # Where everything is kept
 :

尚,この値を変更した場合、misc/CA.shの以下の設定も同様に変更しておく。

42 CATOP=./demoCA

このセクションの最後はCAのポリシーに関する設定である。

76 policy          = policy_match

ポリシーはpolicyで指定されるサブセクションの内容(デフォルトはpolicy_match)が反映される。

policy_matchサブセクション

このセクションではCAが発行する証明書のポリシーを記述する。

79 [ policy_match ]
80 countryName             = match
81 stateOrProvinceName     = match
82 organizationName        = match
83 organizationalUnitName  = optional
84 commonName              = supplied
85 emailAddress            = optional

それぞれの項目はmatch、supplied、optionalのいずれかの値をとる。値の説明については後述する。

ここでCAのポリシーについて説明する。

CAは依頼者からCSR(証明書要求)を受け取って証明書を発行するわけだが、全てのCSRに対して証明書を発行するべきではない。

全く知らない人から来たCSRを本人の身元を確認もせずに発行された証明書は信用度があまりないからである。

そこで、CAではどのようなCSR(証明書要求)に対して証明書を発行するかを決めた「ポリシー」を設定する。

CSRのSubjectの部分がどのような場合に証明書を発行するかについて以下のようにポリシーを設定できる。

match

CAの内容と一致しなければならない

optional

無くてもよい

supplied

なければならない

policy_matchではcountryName,stateOrProvinceName,organizationNameがCAと同一(match)でなければならず、commonNameは必ず記述されていなければならない(supplied)。

またorganizationalUnitNameとemailAddressは有無を問わないのでoptionalとなる。

policy_anythingサブセクション

このセクションはpolicy_matchより緩いポリシーを設定する。

90 [ policy_anything ]
91 countryName             = optional
92 stateOrProvinceName     = optional
93 localityName            = optional
94 organizationName        = optional
95 organizationalUnitName  = optional
96 commonName              = supplied
97 emailAddress            = optional

もしポリシーとしてこちらのほうが好ましい場合は、前述のCA_defaultサブセクションのpolicyの項目を「policy = policy_anything」に変更すればよいことになる。

reqセクション

このセクションはCAへの証明書発行要求に関する設定である。

100 [ req ]
101 default_bits            = 1024
102 default_keyfile         = privkey.pem
103 distinguished_name      = req_distinguished_name
104 attributes              = req_attributes
105 x509_extensions = v3_ca # The extentions to add to the self signed cert

distiguished_name,attributesはそれぞれ証明書の識別子(Distinguished Name:DN)とそのほかの属性に関する設定が記述されているサブセクション名を値とする。

ここではreq_distinguished_nameとreq_attributesがそれぞれのサブセクション名である。

req_distinguished_nameサブセクション

このセクションはそれぞれの要素が取り得るデフォルト値を記述する。この値を変更することにより実際に証明書リクエストを作成する際のデフォルト値を変更することができる。

123  [ req_distinguished_name ]
124  countryName                     = Country Name (2 letter code)
125  countryName_default             = AU ← 国名のデフォルト値(例:JP)
126  countryName_min                 = 2
127  countryName_max                 = 2
128
129  stateOrProvinceName             = State or Province Name (full name)
130  stateOrProvinceName_default     = Some-State ← 都道府県名の
                                                     デフォルト値(例:Chiba)
132  localityName                    = Locality Name (eg, city) ← 区市町村
133
134  0.organizationName              = Organization Name (eg, company)
135  0.organizationName_default      = Internet Widgits Pty Ltd
                                       ← 組織名のデフォルト値(例:Private)

137  # we can do this but it is not needed normally :-)
138  #1.organizationName             = Second Organization Name
139  #1.organizationName_default     = World Wide Web Pty Ltd
140
141  organizationalUnitName          = Organizational Unit Name
142  #organizationalUnitName_default =
143
144  commonName                      = Common Name (eg, YOUR name)
145  commonName_max                  = 64
146
147  emailAddress                    = Email Address
148  emailAddress_max                = 64

usr_certセクション

このセクションはX.509を拡張するためのX.509v3 Extensionの設定である。

159  [ usr_cert ]
  :
166  basicConstraints=CA:FALSE

basicConstraintsは発行する証明書がCAの証明書かどうかを識別する設定である。

Webクライアントやサーバに対して証明書を発行する場合にはこの値はFalseにしておく必要がある。

この設定はX.509v3の標準ExtensionとしてRFC2459で定義されている。

172  # nsCertType                    = server

nsCertTypeは証明書を発行する際にどのような目的で発行するかを定めたもので以下のような値をとる。値は「,」で区切って複数指定可能である。

server

SSLサーバ

client

SSLクライアント

email

S/MIME

objsign

Object Sign

sslCA

SSL CA

emailCA

S/MIME CA

objCA

Object Sign CA

証明書発行の際はこの値を間違えないことが必要である。

その他のパラメータについては割愛する。詳細についてはRFC2459を参照のこと。