ℹ️本記事は古いコンテンツを変換して表示しています。
表示が崩れたり、リンクが正しくない可能性があります。ご了承ください。
ℹ️本記事は古いコンテンツを変換して表示しています。
表示が崩れたり、リンクが正しくない可能性があります。ご了承ください。
2017/05/13 10:05 : SAN付きSSL証明書を作る
サーバが複数の名前を持つときに使いたい、SSL証明書のSAN(Subject Alternative Name)。どこを見ても微妙に気に入らなかったので自分流に。
サーバが複数の名前を持つときに使いたい、SSL証明書のSAN(Subject Alternative Name)。どこを見ても微妙に気に入らなかったので自分流に。
まずはCSRを作る用のopenssl.conf。req_extensionsの指すセクションで、subjectAltNameを定義する。環境変数で、OPENSSL_SAN=DNS:ldap.local,DNS:server1.ldap.local
とか指定して使う。違うSANで発行するためにconfigをいじらなくて良いのが重要。
openssl-req.conf:
prompt = no string_mask = nombstr [req] policy = req_policy distinguished_name = req_distinguished_name req_extensions = v3_req [req_policy] localityName = optional organizationalUnitName = optional emailAddress = optional [req_distinguished_name] countryName = "JP" stateOrProvinceName = "N/A" #localityName = "" 0.organizationName = "my organization" #organizationalUnitName = "" commonName = $ENV::OPENSSL_CN emailAddress = $ENV::OPENSSL_EMAIL [v3_req] subjectAltName = $ENV::OPENSSL_SAN
これでCSRにSANが組み込まれた。あとはCA側で、CSRに書かれているSANを使うようにする。
CA側で同じようにsubjectAltNameを環境変数から取らせる(同じ値を与える)ことでもできるが、非常に気に食わないので採用しない。
さて、非常に悲しいことに、CSRに書かれたSANだけを証明書に写すという設定は無く、CSRのextensionsを丸ごと信用してくっつける設定しかない。自分が発行者(CA)かつ依頼者(CSR作成者)ならよいが、少しでも "ちゃんとした" CAを運用するならこれまで以上にきちんとチェックせねばならない。(元々CNも含めてチェックしないといけないが。)
こちらは長いので要点だけ。
openssl-ca.conf:
[ca] default_ca = CA_default [CA_default] # ... snip ... # Extension copying option: use with caution. copy_extensions = copy