コンテンツにスキップ

OpenSSL設定ファイル

OpenSSL設定ファイルは、コマンドの既定値、Subjectの入力項目、 CA の状態ファイル、 X.509拡張 などをセクションごとに定義するテキストファイル。


設定は [ セクション名 ] と 名前=値 の組み合わせで記述する。

[ server_cert ]
basicConstraints=critical,CA:FALSE
keyUsage=critical,digitalSignature,keyEncipherment
extendedKeyUsage=serverAuth
subjectAltName=DNS:www.example.com
  • # から行末まではコメントになる
  • 同じ名前を同一セクションへ複数回記述すると、後の値で上書きされる
  • セクション名は、コマンドのオプションや別の設定値から参照される

オプション 主な用途
-config コマンド全体の設定ファイルを指定する
-extfile 証明書 へ追加するX.509拡張の設定ファイルを指定する
-extensions 使用する拡張セクションを選択する

openssl req で対話形式のSubject入力を使用する場合、 -config で指定するファイルには [ req ] と distinguished_name の定義が必要になる。

[ req ]
distinguished_name=req_distinguished_name
[ req_distinguished_name ]
countryName=Country Name
organizationName=Organization Name
commonName=Common Name

拡張セクションだけを記述した extensions.cnf を openssl req -config へ指定すると、Subject入力に必要な定義がなくエラーになる。拡張専用ファイルは、証明書作成時の -extfile へ指定する。


Debianでは、通常 /etc/ssl/openssl.cnf が標準設定ファイルとして使用される。

このファイルには openssl req の対話入力に必要な [ req ] と distinguished_name が定義されているため、Subjectを対話形式で入力するだけなら -config を省略できる。

Terminal window
openssl req -new \
-key server.key \
-out server.csr

他の設定値は $名前 または $セクション::名前 で参照できる。

[ CA_default ]
dir=./demoCA
database=$dir/index.txt
certificate=$dir/ca.crt
private_key=$dir/ca.key

この例では、 database、 certificate、 private_key のパスが dir を基準に組み立てられる。


学習用の小規模な構成では、次のように役割を分けると理解しやすい。

ファイル 内容
/etc/ssl/openssl.cnf openssl req の対話入力など、OSの標準設定
extensions.cnf Root CA、Intermediate CA、サーバー証明書のX.509拡張
ca.cnf openssl ca のデータベース、 秘密鍵、証明書、ポリシー

ファイル名に特別な意味はない。コマンドの -config または -extfile で、どのファイルを使うか指定する。



  • config OpenSSL設定ファイルの構文、セクション、変数展開。

  • openssl-req [ req ]、 distinguished_name、拡張セクションの使用方法。

  • x509v3_config 証明書へ追加するX.509拡張の設定形式。