LoginSignup
27
28

More than 5 years have passed since last update.

SAN対応 x.509 証明書を取得するためのCSRを作成する

Last updated at Posted at 2015-07-11

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(名称は特に問わない)を作成します。

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 <( cat openssl-san.conf|sed "s:%HOSTNAME%:${HOSTNAME}:g" )

以下のようなメッセージが出て、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であることが確認できます。

秘密鍵

作成した秘密鍵にはパスフレーズはないため、必要に応じてパスフレーズの設定をして下さい。

27
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
28