なんかてきとうに

わりと個人的な忘備録的ですよ。

お勉強

OpenSSL その6

openssl.conf を見てみる。

本当はコンフィグの中を見るなんていろいろ使う前にやることなんでしょうけれど。

OpenSSLのコンフィグは [ name ] というセクションで区切られています。

認証局に関する情報からリクエストファイル作成の情報、証明書作成のための情報、タイムスタンプに関する情報あたりがあります。

[ ca ]
default_ca = CA_default

CAに関してはまずこんなセクションと設定があります。

これは、openssl ca コマンド使用時に、 -name オプションを記載しなかったときに使われるCAを示します。

続いて

[ CA_default ]

というセクションにCAに関する記載がされています。

なので、別のCAに関する設定を追加したければ

[ CA_default ]

セクションを全部コピーペーストして変更箇所を変更してセクション名をたとえば

[ CA_custom ]

とかやれば openssl ca -name CA_custom とやることで別のCAを扱うことが出来ます。

Webを見て回ってるとこうするよりは openssl ca -config openssl.conf

みたいなことをしてそもそもコンフィグファイルを分けるのが良いのかなと思いますが。

コンフィグファイルはこんな風に とあるセクションでほかのセクションを参照するということがよくあります。

CAの中でも

policy = policy_match

という記載がありますが

これも

[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

などのセクションがあり、どれを標準で使うのかを示しています。

自分で追加したければ [ policy_custom ] などと新しいセクションを作って、必要な項目を記載しましょう。

これももちろん openssl ca -policy policy_anything などと実行時に使うものを変更できます。

同じくCAの中に

x509_extensions = usr_cert

というのがあります。

これも

[ usr_cert ]
basicConstraints=CA:FALSE
nsComment= "OpenSSL Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

[ v3_ca ]
subjectKeyIdentifier=hash
basicConstraints = CA:true

というように標準で2種用意されていて、通常は usr_certを使うようになっています。

もちろん openssl ca -extensions v3_ca などと使うものを変更できます。

[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
string_mask = utf8only

reqセクションにはこんな感じのことが書いてあります。

distinguished_name で記載されているセクションには

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = AU
countryName_min = 2
countryName_max = 2

など、リクエストを作成するときに記載する情報と標準データが並べてあります。

attributes で記載されているセクションには

[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20

と書かれています。リクエスト作成時に最後のほうで聞かれるchallenge passwordなのですが、何に使うものなのかいまいちわかりません。

適当に設定してみても、パスワード要求されずに証明書作成、CRLリストへの追加共にできるのですよね。

最後にTSA タイムスタンプに関する設定があります。

CAと同様にまず

[ tsa ]
default_tsa = tsa_config1

というセクションがあって、続いて

[ tsa_config1 ]

というセクションにTSAに関する設定が記載されています。

OpenSSLのコンフィグはこんな感じです。

いじるのはとりあえず req_distinguished_name で設定されている標準値を普段自分が使うものに変えるとか

default_ca のディレクトリが demoCAとかやる気無い感じなのでそれっぽいのに変えるとか。

policy の設定変えるとか、そのくらいですかね。