OpenSSL設定ファイル
OpenSSL設定ファイルは、コマンドの既定値、Subjectの入力項目、 CA の状態ファイル、 X.509拡張 などをセクションごとに定義するテキストファイル。
設定は [ セクション名 ] と 名前=値 の組み合わせで記述する。
[ server_cert ]basicConstraints=critical,CA:FALSEkeyUsage=critical,digitalSignature,keyEnciphermentextendedKeyUsage=serverAuthsubjectAltName=DNS:www.example.com#から行末まではコメントになる- 同じ名前を同一セクションへ複数回記述すると、後の値で上書きされる
- セクション名は、コマンドのオプションや別の設定値から参照される
-config と -extfile の違い
Section titled “-config と -extfile の違い”| オプション | 主な用途 |
|---|---|
-config |
コマンド全体の設定ファイルを指定する |
-extfile |
証明書 へ追加するX.509拡張の設定ファイルを指定する |
-extensions |
使用する拡張セクションを選択する |
openssl req で対話形式のSubject入力を使用する場合、 -config で指定するファイルには [ req ] と distinguished_name の定義が必要になる。
[ req ]distinguished_name=req_distinguished_name
[ req_distinguished_name ]countryName=Country NameorganizationName=Organization NamecommonName=Common Name拡張セクションだけを記述した extensions.cnf を openssl req -config へ指定すると、Subject入力に必要な定義がなくエラーになる。拡張専用ファイルは、証明書作成時の -extfile へ指定する。
Debianの標準設定
Section titled “Debianの標準設定”Debianでは、通常 /etc/ssl/openssl.cnf が標準設定ファイルとして使用される。
このファイルには openssl req の対話入力に必要な [ req ] と distinguished_name が定義されているため、Subjectを対話形式で入力するだけなら -config を省略できる。
openssl req -new \ -key server.key \ -out server.csr他の設定値は $名前 または $セクション::名前 で参照できる。
[ CA_default ]dir=./demoCAdatabase=$dir/index.txtcertificate=$dir/ca.crtprivate_key=$dir/ca.keyこの例では、 database、 certificate、 private_key のパスが dir を基準に組み立てられる。
用途ごとに分ける
Section titled “用途ごとに分ける”学習用の小規模な構成では、次のように役割を分けると理解しやすい。
| ファイル | 内容 |
|---|---|
/etc/ssl/openssl.cnf |
openssl req の対話入力など、OSの標準設定 |
extensions.cnf |
Root CA、Intermediate CA、サーバー証明書のX.509拡張 |
ca.cnf |
openssl ca のデータベース、 秘密鍵、証明書、ポリシー |
ファイル名に特別な意味はない。コマンドの -config または -extfile で、どのファイルを使うか指定する。
OpenSSL公式ドキュメント
Section titled “OpenSSL公式ドキュメント”-
config OpenSSL設定ファイルの構文、セクション、変数展開。
-
openssl-req
[ req ]、distinguished_name、拡張セクションの使用方法。 -
x509v3_config 証明書へ追加するX.509拡張の設定形式。