LinuCレベル3 303試験の例題と解説
325.1X.509 証明書と公開鍵の基礎
LinuCレベル3 303試験の出題範囲から「325.1 X.509 証明書と公開鍵の基礎」についての例題を解いてみます。
このテーマは、公開鍵暗号基盤PKI(Public Key Infrastructure)の基礎が含まれます。今日の通信では必須の技術となっており、重要度も高いのでしっかり理解しておきましょう。
例題
現在使っている証明書の有効期限が切れる前に、更新のためCSRを発行したい。
以下の括弧内に入るものはどれか。
openssl ( ) -new -key test.key -out test.csr
- request
- req
- csr
- x509
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「2.req」です。
証明書の作成(更新)は、以下の順で行います。
①秘密鍵の作成
②CSRの作成
③CSRへの署名(証明書の作成)
では、具体的な例で確認してみましょう。
①秘密鍵の作成
2048bitsの秘密鍵(test.key)を作成しています。
pi@raspizero2w:~ $ openssl genrsa -des3 -out test.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
...................................................+++++
......+++++
e is 65537 (0x010001)
Enter pass phrase for test.key:
Verifying - Enter pass phrase for test.key:
pi@raspizero2w:~ $ ls test.*
test.key
②CSR(Certificate Signing Request)の作成
署名をしてもらうCSRを作成します。作成時には、組織名などの情報を入力します。
pi@raspizero2w:~ $ openssl req -new -key test.key -out test.csr
Enter pass phrase for test.key:
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]:Tokyo
Locality Name (eg, city) []:Tama-City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:TestCompany
Organizational Unit Name (eg, section) []:Test
Common Name (e.g. server FQDN or YOUR name) []:www.testcompany.local
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
pi@raspizero2w:~ $ ls test.*
test.csr test.key
③CSRへの署名(証明書の作成)
作成したCSRへ署名をして証明書を作成します。
以下は自己署名証明書を作成していますが、通常はCA(Certification Authority)と呼ばれる認証局に依頼をして署名をしてもらいます。
pi@raspizero2w:~ $ openssl x509 -req -days 3650 -signkey test.key < test.csr > test.crt
Signature ok
subject=C = JP, ST = Tokyo, L = Tama-City, O = TestCompany, OU = Test, CN = www.testcompany.local
Getting Private key
Enter pass phrase for test.key:
pi@raspizero2w:~ $ ls test.*
test.crt test.csr test.key
なお、作成した秘密鍵・CSR・証明書の情報はopensslコマンドを使って確認することが出来ます。
秘密鍵の確認
openssl rsa -text -noout -in test.key
CSRの確認
openssl req -text -noout -in test.csr
証明書の確認
openssl x509 -text -noout -in test.crt
以下、証明書を確認している操作例です。
pi@raspizero2w:~ $ openssl x509 -text -noout -in test.crt
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
66:9a:46:d6:2a:69:a9:29:b9:ae:b2:58:c8:03:e2:e3:e2:2f:07:4d
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = JP, ST = Tokyo, L = Tama-City, O = TestCompany, OU = Test, CN = www.testcompany.local
Validity
Not Before: Dec 6 02:52:49 2021 GMT
Not After : Dec 4 02:52:49 2031 GMT
Subject: C = JP, ST = Tokyo, L = Tama-City, O = TestCompany, OU = Test, CN = www.testcompany.local
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:c6:1c:5a:af:74:33:4d:be:9a:ba:7f:13:05:3e:
41:1c:ed:2d:19:59:e9:61:3d:f9:83:a5:6f:21:4b:
14:08:e4:73:e5:ff:d1:6d:3d:7f:b8:f9:e9:4d:26:
62:64:df:11:e8:2a:69:d5:22:df:1f:ae:56:9f:24:
2d:d9:f2:b9:92:0c:b1:55:9a:54:b3:b9:0a:65:e2:
97:45:e7:b3:a3:6f:08:d7:8d:32:29:ca:82:90:e4:
8e:22:f4:df:27:a4:d7:51:a5:ae:4d:bf:6f:60:46:
11:f4:07:55:6a:d1:7f:0f:8c:65:43:24:04:ca:61:
23:bc:17:2f:51:86:32:88:53:89:3a:da:be:58:ee:
82:f8:92:15:a7:18:ff:e5:b9:f1:8e:7f:e0:56:e1:
f0:ae:09:2c:77:45:55:76:ff:6a:68:79:e7:80:55:
66:85:e6:0d:64:55:ad:62:e2:ab:1d:10:a0:bc:b7:
9c:a6:23:c9:50:8b:d6:58:eb:a9:d1:1f:9e:8f:73:
9a:f6:b3:62:08:7d:d5:4a:04:5d:bb:29:3b:3d:c8:
0f:58:eb:89:e2:ed:14:c7:8b:0d:c7:98:0f:e7:e1:
c9:38:e4:40:81:cd:8c:06:68:a8:a9:09:9b:28:fe:
ad:e2:e5:e9:2a:9d:d5:6d:96:6a:60:68:8e:ff:35:
58:67
Exponent: 65537 (0x10001)
Signature Algorithm: sha256WithRSAEncryption
bf:80:09:c3:dc:7f:62:1d:40:d9:53:29:44:0d:de:32:e2:6f:
a5:70:3e:16:90:04:fd:b4:c6:b9:0f:e2:be:6f:2b:a3:f2:68:
bf:5c:f9:ac:27:85:f5:7b:5f:ed:89:6e:9b:71:61:f3:ab:d6:
6b:a4:24:81:6c:92:76:94:bc:63:5c:98:e3:bf:3f:9e:09:27:
78:3b:92:56:5f:b0:d5:03:98:3d:aa:c8:85:cd:f4:e7:d5:36:
ec:8e:21:32:bd:40:16:a8:a5:5f:24:ec:0c:a6:dc:c6:17:b3:
21:8d:2b:d0:0c:df:e4:48:cd:71:f7:13:5e:34:75:bc:c6:f8:
3d:38:67:d6:87:78:fd:77:51:e1:77:20:d7:e7:d6:de:2e:e3:
0c:36:43:27:8f:03:17:df:f2:eb:04:c0:19:7a:73:ef:e4:7d:
79:43:52:0d:db:eb:af:d2:8c:c1:b2:20:4c:b0:22:f8:3d:ba:
3b:fc:22:6c:df:ea:9c:e3:15:04:4f:d8:fe:b6:04:6b:9f:9c:
e6:2c:b8:88:52:a2:e8:2f:cd:a1:7b:8d:c0:b8:dc:17:32:d2:
2f:71:d0:ec:f4:b7:38:9b:03:c0:3b:e1:b3:4b:d9:22:06:5b:
48:37:98:b4:23:8b:15:e8:75:37:5b:01:08:f5:78:06:44:74:
81:24:0e:1b
opensslコマンドについては、以下で詳細が確認できます。
https://www.openssl.org/docs/manmaster/man1/openssl.html
例題作成者
鯨井 貴博 (LinuCエヴァンジェリスト/登録インストラクター、LPI-Japanアカデミック認定校 Zeus IT Camp)