SAN is ナニ
SubjectAltNameの意で、複数のDNS名(ホスト名)を扱う場合に利用するx.509証明書のオプションです。
これを利用することにより、複数のホスト名を取り扱うx.509証明書を作成できます。
SAN対応 x.509 証明書を作成する
ここでは以下の2つの階層で利用できる x.509 証明書を発行するためのCSRを作成します。
– test.local
– *.test.local
openssl-san.conf を作成する
以下の内容でopenssl-san.conf(名称は特に問わない)を作成します。
[req] distinguished_name=req_distinguished_name req_extensions=v3_req [ v3_req ] basicConstraints=CA:FALSE keyUsage=nonRepudiation, digitalSignature, keyEncipherment subjectAltName=@alt_names [req_distinguished_name] countryName=Country Name (2 letter code) countryName_default=JP stateOrProvinceName=State or Province Name (full name) stateOrProvinceName_default=Kyoto localityName=Locality Name (eg, city) localityName_default=Kyoto organizationalUnitName=Organizational Unit Name (eg, section) organizationalUnitName_default=my home commonName = saitara commonName_max = 64 [alt_names] DNS.1=%HOSTNAME% DNS.2=*.%HOSTNAME%
ホスト名を環境変数に定義する
後のワンライナーで利用するため、環境変数 HOSTNAME に証明書を作成するためのホスト名を設定します。
$ export HOSTNAME=test.local
CSRを作成する
先に設定した環境変数 HOSTNAME を有効に活用し、取得したい内容のCSRを作成します。
C/ST/L/O/OUなどはご自身の組織などにあわせて変更して下さい。
$ openssl req -new -newkey rsa:2048 -keyout ${HOSTNAME}.key.nopass -sha256 -nodes -extensions v3_req -subj "/C=JP/ST=Tokyo/L=Minato-ku/O=Iret inc./OU=cloudpack/CN=${HOSTNAME}" -out ${HOSTNAME}.csr -config以下のようなメッセージが出て、CSRが作成されます。
Generating a 2048 bit RSA private key ....................+++ .............+++ writing new private key to 'test.local.key.nopass' -----作成されたものを確認する
CSR
作成されたCSRを確認します。
(以下に示すものはこのエントリーのために試験的に作成したもので、実際には使われてないものです)$ openssl req -noout -text -in test.local.csr Certificate Request: Data: Version: 0 (0x0) Subject: C=JP, ST=Tokyo, L=Minato-ku, O=Iret inc., OU=cloudpack, CN=test.local Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:e2:b8:a1:91:fa:ca:6b:ad:0d:bb:5a:7b:7c:66: 19:75:31:da:e5:23:1c:67:d9:fa:a7:4a:4a:44:23: d1:9d Exponent: 65537 (0x10001) Attributes: Requested Extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment X509v3 Subject Alternative Name: DNS:test.local, DNS:*.test.local Signature Algorithm: sha256WithRSAEncryption a1:27:55:64:e6:f6:15:8a:cb:f0:88:70:cc:24:f3:26:ad:ef: c2:51:ba:96:86:97:29:f8:40:5f:f2:33:7d:0e:a2:0a:e5:96: 8c:5a:89:39ここで
X509v3 Subject Alternative Name: DNS:test.local, DNS:*.test.localと出ているので期待する内容でのCSRであることが確認できます。
秘密鍵
作成した秘密鍵にはパスフレーズはないため、必要に応じてパスフレーズの設定をして下さい。
元記事はこちら