BIGIPを証明書の認証局にする(3/3)

ここまでの流れ

前回までは認証局を作成して、サーバー証明書の自己署名をやってみました。

ここで、やっと当初の目的であるクライアント証明書も自己署名してみました。

環境

  • BIGIP LTM v11.5.3 ~ v12.1.1
  • BIGIP LTM VE v11.3.0

認証局をつくる

1.BIGIPに認証局を作成する

認証局の作成手順を参照してください。

2.クライアント証明書のキーファイルを作成する

# openssl genrsa -des3 -out sample_client.key 2048

Generating RSA private key, 2048 bit long modulus
...............+++
.+++
e is 65537 (0x10001)
Enter pass phrase for sample_client.key: …①
Verifying - Enter pass phrase for sample_client.key: …②

①②はパスフレーズを入力します。①と②は同じ値を入力します。

 

/shared/CA/sample_server.keyが作成されたことを確認します。

3.パスフレーズを解除する

パスフレーズは設定したままでもいいのですが、私は忘れてしまうので覚えているうちに解除しておきます。

 

# openssl rsa -in /shared/CA/sample_client.key -out /shared/CA/sample_client_np.key

Enter pass phrase for /shared/CA/sample_client.key: …①
writing RSA key

①はsample_client.keyを作成時に入力したパスフレーズを入力します。

 

以下が作成されます。

/shared/CA/sample_clientkey …パスフレーズ付きキーファイル

/shared/CA/sample_client_np.key …パスフレーズを解除したキーファイル

4.署名要求書を作成する

# openssl req -new -days 5475 -sha256 -key /shared/CA/sample_client_np.key -out /shared/CA/sample_client.csr

 

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP …①
State or Province Name (full name) [Some-State]:Kyoto …②
Locality Name (eg, city) []:Nakagyo-ku …③
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Excellence Co., Ltd …④
Organizational Unit Name (eg, section) []:System Innovation …⑤
Common Name (e.g. server FQDN or YOUR name) []:1excellence.com …⑥
Email Address []: …⑦

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: …⑧
An optional company name []: …⑨

①は国名を2文字のレターコードで入力します。日本はJP。

②は国名/州名なのですが、日本なので都道府県でいいかな。

③は都市名なので、市町村名や区名等。

④は組織名なので、会社名とか部署名等。

⑤は組織の単位名なので、部署名、チーム名等。

⑥はFQDN

⑦はメールアドレス(入力しなくてもいい)

⑧はチャレンジパスワード(入力しなくてもいい)

⑨は会社名(入力しなくてもいい)

 

以下が作成されます。

/shared/CA/sample_server.csr

5.クライアント証明書用の認証局の設定をする

# cp /shared/CA/openssl.cnf /shared/CA/openssl-client.cnf

 

コピーしたopenssl-server.cnfの以下を編集する

 

default_days = 365  ← サーバー証明書の有効期限を書き換える(変更しない場合は1年)

#nsCertType = client, email  ←コメントを外す

6.認証局で署名する

# openssl ca -md sha256 -days 365 -config /shared/CA/openssl-client.cnf \

-in /shared/CA/sample_client.csr \

-keyfile /shared/CA/private/cakey.key \

-cert /shared/CA/cacert.crt \

-out /shared/CA/sample_client.crt

Using configuration from /shared/CA/openssl-client.cnf
Enter pass phrase for /shared/CA/private/cakey.key: …「認証局のパスフレーズ」を入力
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Dec  6 15:31:49 2016 GMT
            Not After : Dec  6 15:31:49 2017 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Kyoto
            organizationName          = Excellence Co., Ltd
            organizationalUnitName    = System Innovation
            commonName                = 1excellence.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Cert Type:
                SSL Server
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
            X509v3 Authority Key Identifier:
                keyid:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

Certificate is to be certified until Dec  6 15:31:49 2017 GMT (365 days)
Sign the certificate? [y/n]:y …「y」を入力



1 out of 1 certificate requests certified, commit? [y/n]y …「y」を入力
Write out database with 1 new entries
Data Base Updated

7.署名されたクライアント証明書が作成されたことを確認する

# ls -l /shared/CA/sample_client.crt

 

署名されたクライアント証明書が作成されていれば完了です。

付録:こんな時は

署名処理(6の手順)で再度実行すると、以下のエラーになります。

 

failed to update database
TXT_DB error number 2

 

この時は、/shared/CA/index.txtをリネームして、touch /shared/CA/index.txtで作り直してから試してみてください。

コメントをお書きください

コメント: 18
  • #1

    MKmFWfxY (火曜日, 15 3月 2022 23:53)

    1

  • #2

    MKmFWfxY (火曜日, 15 3月 2022 23:55)

    1

  • #3

    MKmFWfxY (火曜日, 15 3月 2022 23:56)

    1

  • #4

    MKmFWfxY (火曜日, 15 3月 2022 23:56)

    1

  • #5

    MKmFWfxY (火曜日, 15 3月 2022 23:57)

    1

  • #6

    MKmFWfxY (火曜日, 15 3月 2022 23:58)

    0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

  • #7

    MKmFWfxY (火曜日, 15 3月 2022 23:58)

    1 waitfor delay '0:0:15' --

  • #8

    MKmFWfxY (火曜日, 15 3月 2022 23:59)

    -5) OR 899=(SELECT 899 FROM PG_SLEEP(15))--

  • #9

    MKmFWfxY (火曜日, 15 3月 2022 23:59)

    1*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

  • #10

    MKmFWfxY (水曜日, 16 3月 2022 00:00)

    1

  • #11

    MKmFWfxY (水曜日, 16 3月 2022 00:00)

    1

  • #12

    MKmFWfxY (水曜日, 16 3月 2022 00:01)

    1

  • #13

    MKmFWfxY (水曜日, 16 3月 2022 00:01)

    1

  • #14

    MKmFWfxY (水曜日, 16 3月 2022 00:02)

    1

  • #15

    MKmFWfxY (水曜日, 16 3月 2022 00:02)

    1

  • #16

    MKmFWfxY (水曜日, 16 3月 2022 00:03)

    1

  • #17

    MKmFWfxY (水曜日, 16 3月 2022 00:04)

    1

  • #18

    MKmFWfxY (水曜日, 16 3月 2022 00:04)

    1