UPKI 電子証明書発行サービスでサーバー証明書を更新・検証する
このスクラップについて
このスクラップでは下記のページを参考にしながら UPKI 電子証明書発行サービスでサーバー証明書を更新する手順を記録していく。
主体者 DN チェック時の仕様
下記は UPKI 電子証明書発行サービス電子証明書自動発行支援システムより自動送信されたメールからの抜粋。
2020年7月15日14:00以降、主体者DNチェック時の仕様が変更になっております。
証明書の有効期限を迎える場合、主体者DNに含まれるCN、OU、Cが一致すれば更新申請が可能です。
LまたはSTが異なっていたとしても更新申請が可能です。
発行済みの証明書で L、ST が異なり、CN、OU、Cが一致した証明書がある場合は、新規発行ではなく、更新申請をお願いいたします。
主体者 DN とは恐らく証明書の Subject(証明対象)のことであろう。
- CN = Common Name、サーバーの FQDN(例:https://www.nii.ac.jp なら www.nii.ac.jp)
- OU = Organizational Unit Name、省略可能なようだ、というか省略すべきなのか?
- C = Country、JP 固定
ST や L に指定する内容は決まっているようだ。
例えば僕の母校の長岡技術科学大学の場合は ST = Niigata, L = Nagaoka となる。
同じようなマニュアル
どちらを読んでいけば良いのだろう。
なるほど利用管理者と登録担当者で異なるのか。
CSR を作成したりするのは利用管理者なので利用管理者用のマニュアルを読んでいけば良さそうだ。
おおまかな流れ
- 鍵ペアの作成
- CSR の作成
- 更新申請 TSV ファイルの作成
- 更新申請 TSV ファイルの送付
- サーバー証明書のダウンロード
- サーバー証明書のインストール
- サーバー証明書の置き換え通知
UPKI ドキュメント
ここが大元のようだ。
鍵ペアの作成
下記はドキュメントに掲載されているコマンド。
openssl genrsa -des3 -rand <randfile1.txt>:<randfile2.txt>:<randfile3.txt> 2048 > servername.key
パスワードも乱数も不要であれば下記のコマンドでも良い。
openssl genrsa 2048 > xxx.nagaokaut.ac.jp-2024.key
更新は毎年必要になるのでファイル名に年度を含めておくと良さそう。
上記のコマンドはできれば証明書を設定するサーバーで実行する。
CSR の作成
下記はドキュメントに掲載されているコマンド。
openssl req -new -key servername.key -sha256 -out servername.csr
openssl req -new -key xxx.nagaokaut.ac.jp-2024.key -sha256 -out xxx.nagaokaut.ac.jp-2024.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]:Niigata
Locality Name (eg, city) []:Nagaoka
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nagaoka University of Technology
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:xxx.nagaokaut.ac.jp
Email Address []:.
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:.
An optional company name []:.
CSR の確認
openssl req -in xxx.nagaokaut.ac.jp-2024.csr -text -noout
Certificate Request:
Data:
Version: 1 (0x0)
Subject: C=JP, ST=Niigata, L=Nagaoka, O=Nagaoka University of Technology, CN=xxx.nagaokaut.ac.jp
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:ae:64:3a:fc:e0:96:8a:12:82:46:5a:0b:25:fb:
cf:4b:97:ad:c5:c4:ed:40:6f:e5:29:59:7c:e8:bb:
0a:85:07:1c:5a:79:ba:47:82:f2:9d:68:2b:a2:d1:
eb:34:23:f0:a6:7e:bb:aa:d8:bc:09:c0:8d:2a:c0:
74:d1:72:76:8a:46:5f:9c:72:ca:22:8b:ea:2d:da:
ce:a1:d7:c8:00:74:c6:0d:45:8d:af:dc:f9:cb:a7:
2e:74:70:f1:7c:fa:06:71:24:d7:06:f3:3d:b6:6e:
c2:12:58:f6:be:8f:65:31:34:58:a3:bc:7b:7e:3e:
32:32:5f:1b:82:c5:0a:13:50:b3:8f:f2:33:c5:4f:
d2:71:bf:96:40:4b:f8:4c:27:14:2d:29:9f:72:b4:
c4:e4:29:69:dc:00:ae:61:19:7c:c7:be:b1:a8:8c:
5e:a6:46:9c:8d:b9:d7:e5:67:bc:13:b9:9f:4b:30:
e7:9d:d0:ba:a9:0c:df:1e:79:f0:67:77:6c:6f:7b:
91:f9:95:c5:62:4e:b7:52:a9:33:1c:9d:c0:fb:a6:
02:c3:37:26:47:0c:48:b6:67:bb:bd:ca:ec:56:ba:
43:70:23:de:fd:78:e0:a6:7f:a7:f9:a3:1d:fb:dc:
10:e4:83:a6:54:38:68:85:e5:16:86:70:ce:ab:a7:
7e:43
Exponent: 65537 (0x10001)
Attributes:
(none)
Requested Extensions:
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
55:8d:62:27:f5:eb:6e:87:77:ae:a1:e8:74:53:89:d3:f9:aa:
1e:9a:e8:72:fa:55:9f:08:96:7d:c9:55:67:3b:af:19:c3:c5:
f9:87:39:71:82:d0:d6:b1:61:06:58:a5:8a:f1:23:dc:18:6f:
18:12:ed:4c:da:bb:1b:71:e6:6a:d1:ee:70:7a:e6:c9:e9:7a:
ec:20:f3:5e:e0:31:6a:96:27:cd:64:36:36:c3:2f:8e:8a:71:
e2:0d:a4:b4:9d:f0:2a:c7:3d:21:f2:fb:af:c9:22:21:86:68:
0a:8f:53:09:5e:89:d2:ff:4e:59:72:84:ff:f8:01:54:ae:3c:
71:88:1b:ad:87:75:54:86:5a:fd:51:67:83:72:38:db:53:70:
84:d2:d3:ae:31:75:fd:ed:99:a2:59:71:d1:7b:01:fe:3a:da:
3b:74:01:9e:d0:2e:60:2d:12:8e:47:f4:bc:d8:00:69:83:7b:
62:3a:1a:6c:0e:fa:55:50:3d:48:92:5a:31:ee:c3:f9:7c:f8:
bc:7a:57:dc:77:4a:e1:22:4e:32:58:cb:e6:17:61:45:97:08:
63:a2:bc:d9:b0:d2:4a:3e:89:9d:4b:a4:7b:37:db:d8:dc:78:
76:5f:3c:7b:7c:fa:84:a5:9c:ce:5a:f1:a4:48:a7:ab:93:bf:
2c:12:10:bd
更新申請 TSV ファイルの作成
下記の Web アプリを使うようだ。
トップページ
作成の開始
これには何を入れていけば良いんだろう?
とりあえず送信してみた
CSRファイル読み込みを行なってみた
それでもまだ色々と入力が必要だ
失効対象証明書シリアル番号には何を入れれば良いのだろう?
探したらマニュアルがあった。
なるほど現在の証明書を読み込めば良いのか。
それか現在の証明書を openssl コマンドで内容を確認すれば良さそうだ。
証明書を入手するにはブラウザの証明書ビューアで https://xxx.nagaokaut.ac.jp にアクセスして証明書をダウンロードすれば良い。
証明書ビューアの使い方については下記がわかりやすい。
openssl x509 -text -noout -in xxx.nagaokaut.ac.jp.cer
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
40:7a:be:ae:3c:5c:c1:57:60:4e:7f:66:37:a9:69:37
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=JP, O=SECOM Trust Systems CO.,LTD., CN=NII Open Domain CA - G7 RSA
Validity
Not Before: May 7 01:18:06 2024 GMT
Not After : Jun 7 01:18:06 2025 GMT
Subject: C=JP, ST=Niigata, L=Nagaoka, O=Nagaoka University of Technology, CN=xxx.nagaokaut.ac.jp
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:b0:33:11:92:e9:e9:c3:5a:2f:dc:db:a9:fa:38:
d6:cf:c3:2f:de:a9:1c:da:af:7c:a2:79:46:a7:5b:
ca:80:29:e4:99:0e:9a:87:37:98:6d:54:56:3e:c4:
ab:7b:a5:fe:2e:d2:a7:cc:74:5e:fc:b4:e7:25:80:
c9:ce:c3:3d:ee:78:04:55:0e:0c:3c:4f:19:7f:e0:
fe:59:77:5a:25:cf:08:7a:35:c2:29:2a:b5:63:5e:
a1:fe:95:bb:1d:f9:12:0e:c4:c8:c8:3e:c9:08:48:
eb:07:c8:ea:80:21:92:74:b8:4d:0c:de:2c:2b:06:
4e:66:9f:fc:49:e3:be:46:cf:aa:22:0f:13:9a:99:
6e:85:8d:81:dc:1d:f3:2e:67:41:3b:fa:32:95:a0:
f5:51:ad:92:bf:50:8a:a6:0d:28:95:f7:01:30:cb:
27:e7:1b:6c:93:e9:70:89:4b:41:68:7d:bc:a6:78:
9b:db:d3:44:17:65:46:d0:c7:f2:fb:46:a2:f3:cb:
70:96:ff:cd:bb:59:da:e9:66:d4:a8:ba:fa:be:b8:
2f:2f:f7:ac:93:39:50:61:b3:77:73:67:11:2c:db:
9f:a9:ef:28:7e:c4:43:a7:68:10:5a:f5:a6:8a:30:
0d:3f:45:3c:b4:ca:b2:bf:44:00:8a:a2:ac:6e:8d:
0c:f7
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Authority Key Identifier:
B0:2E:E5:51:ED:FC:4A:CF:A3:87:F1:13:90:76:2D:9D:8E:94:A1:E3
Authority Information Access:
CA Issuers - URI:http://repo1.secomtrust.net/sppca/nii/odca4/nii-odca4g7rsa.cer
OCSP - URI:http://niig7rsa.ocsp.secom-cert.jp
X509v3 Subject Alternative Name:
DNS:msc-cge2020.nagaokaut.ac.jp
X509v3 Certificate Policies:
Policy: 1.2.392.200091.110.214.3
CPS: http://repo1.secomtrust.net/sppca/nii/odca4/
Policy: 2.23.140.1.2.2
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
X509v3 CRL Distribution Points:
Full Name:
URI:http://repo1.secomtrust.net/sppca/nii/odca4/fullcrlg7rsa.crl
X509v3 Subject Key Identifier:
02:4B:BF:AF:A5:4A:09:05:A7:A8:08:56:D7:C5:F9:8E:33:2F:9C:34
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
CT Precertificate SCTs:
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : 4E:75:A3:27:5C:9A:10:C3:38:5B:6C:D4:DF:3F:52:EB:
1D:F0:E0:8E:1B:8D:69:C0:B1:FA:64:B1:62:9A:39:DF
Timestamp : May 7 01:28:06.317 2024 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:44:02:20:13:A7:89:96:CC:52:2A:C9:9F:68:F2:31:
64:B8:42:5E:2E:D4:07:DA:A6:E6:D5:4D:5A:52:B2:D4:
87:60:31:2A:02:20:7E:E4:53:1E:B5:7C:A8:71:01:E8:
7C:56:6C:14:63:A9:5E:E1:B8:57:6E:F5:34:0B:B8:77:
D0:4E:E5:23:FD:9E
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : CF:11:56:EE:D5:2E:7C:AF:F3:87:5B:D9:69:2E:9B:E9:
1A:71:67:4A:B0:17:EC:AC:01:D2:5B:77:CE:CC:3B:08
Timestamp : May 7 01:28:06.645 2024 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:45:02:21:00:E2:05:C5:76:82:24:5B:67:6F:BD:1E:
EA:A3:69:4F:D0:46:47:BF:37:03:45:EC:6A:A8:6A:98:
14:4D:49:49:10:02:20:26:CA:2F:18:36:5E:AC:2E:70:
39:18:6D:31:E3:C5:E3:41:76:BB:DD:DF:C1:D7:6C:79:
56:F2:6D:E0:03:69:83
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : 7D:59:1E:12:E1:78:2A:7B:1C:61:67:7C:5E:FD:F8:D0:
87:5C:14:A0:4E:95:9E:B9:03:2F:D9:0E:8C:2E:79:B8
Timestamp : May 7 01:28:07.253 2024 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:46:02:21:00:C0:03:BB:E0:88:5F:77:31:84:88:87:
98:B5:DD:CF:55:5A:C9:69:AE:1A:7F:2E:6B:4F:42:72:
54:0F:44:BE:C4:02:21:00:A4:19:9B:98:F5:A3:26:7B:
1C:33:1E:B8:97:6A:EE:D9:F3:E5:B4:75:07:C6:7A:BE:
76:19:69:17:1A:05:28:5D
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : CC:FB:0F:6A:85:71:09:65:FE:95:9B:53:CE:E9:B2:7C:
22:E9:85:5C:0D:97:8D:B6:A9:7E:54:C0:FE:4C:0D:B0
Timestamp : May 7 01:28:07.702 2024 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:45:02:21:00:88:EF:07:C4:B6:63:90:B1:0F:5D:6A:
77:32:76:F6:FC:1B:33:D0:AF:9F:3F:B2:C1:FE:30:5A:
C6:7F:03:0F:3C:02:20:6E:D8:47:59:7C:1F:C3:C1:5C:
9C:AC:8A:24:E4:C8:57:31:37:CF:E9:62:A0:BD:A4:F7:
1D:B7:08:FD:B0:07:15
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
1c:38:2b:2e:75:52:f2:34:dc:45:2e:a9:3b:91:0c:cb:84:aa:
71:d2:33:da:d9:ed:95:1f:54:73:5c:4b:82:d0:26:03:b7:3e:
56:df:a2:3b:12:06:95:35:5d:80:82:2f:00:78:99:8f:0a:5d:
c5:3c:62:e4:23:39:65:cc:2b:a0:18:2a:99:cc:44:46:6b:c0:
47:3b:9c:d9:80:12:83:27:87:c6:cb:92:63:7b:59:47:73:23:
f8:7e:d0:df:62:d6:c4:d9:37:b6:f0:f3:51:0b:4c:1b:ff:e8:
f4:f9:a7:e2:47:8d:46:93:69:0a:c5:78:ae:bd:60:51:4a:40:
ef:f9:42:db:ce:20:f1:33:b6:e2:8f:b0:c2:1b:c9:d1:64:11:
d0:ce:ea:b7:9a:74:4c:4b:cf:45:a7:83:bf:59:ad:ce:e9:26:
09:9f:cf:93:ce:9b:b9:98:8d:95:6e:f6:2d:0a:7d:b0:f0:08:
dc:8e:cb:46:c8:bb:40:69:a7:c6:cb:7c:4d:3d:3a:cd:eb:ea:
73:1f:23:04:8f:1c:35:0c:f2:d4:11:97:26:2f:10:32:e3:7d:
e6:5b:6b:61:10:71:15:52:32:8e:e8:10:0a:e9:90:0d:42:cc:
ad:35:f1:3a:dc:4f:0a:f1:e8:e0:93:95:00:5a:85:63:b2:11:
a3:88:77:78
シリアル番号は含まれているが 40:7a:be:ae:3c:5c:c1:57:60:4e:7f:66:37:a9:69:37
のようにバイト列なので扱いにくいかも知れない。
証明書を読み込んだ結果
整数値は 85707919409182070929122466079137425719 になったがこれであっているのだろうか?
BigInt('0x' + '40:7a:be:ae:3c:5c:c1:57:60:4e:7f:66:37:a9:69:37'.replaceAll(':', ''))
85707919409182070929122466079137425719n と表示されるのでどうやら正しいようだ。
dNSName
バーチャルホスト機能など同一計算機・同一OSでホスト名が異なる複数のサーバを使用している場合に必要なようだ。
無事に作成できた
ダウンロードボタンを押すと TSV ファイルがダウンロードされる。
どうやら文字コードは Shift JIS のようだ。
この TSV ファイルを学校の情報処理担当の方にメールなどで送付して手続きしてもらうとダウンロード URL が送られてくる。
サーバー証明書のインストール
nginx の場合は下記を見れば良いようだ。
サーバー証明書は server.crt という名前で保存とあるが毎年更新していくと分かりにくそうなので xxx.nagaokaut.ac.jp-2024.cer
としておこう。
中間証明書が必要なので下記からダウンロードする。
RSA の場合は下記だ。
興味深いので証明書の内容を確認してみる。
openssl x509 -text -noout -in nii-odca4g7rsa.cer
- Issuer: C=JP, O=SECOM Trust Systems CO.,LTD., OU=Security Communication RootCA2
- Subject: C=JP, O=SECOM Trust Systems CO.,LTD., CN=NII Open Domain CA - G7 RSA
サーバー証明書の Issuer は CN=NII Open Domain CA - G7 RSA なので、OU=Security Communication RootCA2 を信頼するブラウザならこのサーバー証明書も信頼できることになる。
ダウンロードしたら連結する、中間証明書が後のようだ。
cat xxx.nagaokaut.ac.jp-2024.cer nii-odca4g7rsa.cer > xxx.nagaokaut.ac.jp-2024-nginx.cer
あとは /etc/nginx/conf のどこかにある設定ファイルに下記の内容を入力すれば良い。
- ssl_certificate: /etc/nginx/conf/xxx.nagaokaut.ac.jp-2024-nginx.cer
- ssl_certificate_key: /etc/nginx/conf/xxx.nagaokaut.ac.jp-2024.key
更新したら再起動する。
sudo systemctl restart nginx
証明書の検証作業
Web ブラウザでアクセスして証明書ビューアで有効期間などを確認すれば良い。
これは xxx.nagaokaut.ac.jp ではない別のサーバーだが
サーバー証明書の置き換え通知
情報処理担当の方に「xxx.nagaokaut.ac.jp」のサーバー証明書の更新が完了しましたとメールなどをすれば良いだろう。