OpenSSL 資料一覧
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クライアント
S/MIME
objsign
Object Sign
sslCA
SSL CA
emailCA
S/MIME CA
objCA
Object Sign CA
証明書発行の際はこの値を間違えないことが必要である。
その他のパラメータについては割愛する。詳細についてはRFC2459を参照のこと。