Closed14

UPKI 電子証明書発行サービスでサーバー証明書を更新・検証する

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

主体者 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 に指定する内容は決まっているようだ。

https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=59022761

例えば僕の母校の長岡技術科学大学の場合は ST = Niigata, L = Nagaoka となる。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

おおまかな流れ

  1. 鍵ペアの作成
  2. CSR の作成
  3. 更新申請 TSV ファイルの作成
  4. 更新申請 TSV ファイルの送付
  5. サーバー証明書のダウンロード
  6. サーバー証明書のインストール
  7. サーバー証明書の置き換え通知
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

鍵ペアの作成

https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=26188809

下記はドキュメントに掲載されているコマンド。

コマンド
openssl genrsa -des3 -rand <randfile1.txt>:<randfile2.txt>:<randfile3.txt> 2048 > servername.key

パスワードも乱数も不要であれば下記のコマンドでも良い。

コマンド(例)
openssl genrsa 2048 > xxx.nagaokaut.ac.jp-2024.key

更新は毎年必要になるのでファイル名に年度を含めておくと良さそう。

上記のコマンドはできれば証明書を設定するサーバーで実行する。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

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 []:.
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

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
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

更新申請 TSV ファイルの作成

下記の Web アプリを使うようだ。

https://certs.nii.ac.jp/tsv-tool/


トップページ


作成の開始


これには何を入れていけば良いんだろう?


とりあえず送信してみた


CSRファイル読み込みを行なってみた


それでもまだ色々と入力が必要だ

失効対象証明書シリアル番号には何を入れれば良いのだろう?

探したらマニュアルがあった。

https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=53489647

なるほど現在の証明書を読み込めば良いのか。

それか現在の証明書を openssl コマンドで内容を確認すれば良さそうだ。

証明書を入手するにはブラウザの証明書ビューアで https://xxx.nagaokaut.ac.jp にアクセスして証明書をダウンロードすれば良い。

証明書ビューアの使い方については下記がわかりやすい。

https://jp.globalsign.com/ssl/about/authentification.html

コマンド
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 になったがこれであっているのだろうか?

Node.js などで確認
BigInt('0x' + '40:7a:be:ae:3c:5c:c1:57:60:4e:7f:66:37:a9:69:37'.replaceAll(':', ''))

85707919409182070929122466079137425719n と表示されるのでどうやら正しいようだ。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

無事に作成できた


ダウンロードボタンを押すと TSV ファイルがダウンロードされる。

どうやら文字コードは Shift JIS のようだ。

この TSV ファイルを学校の情報処理担当の方にメールなどで送付して手続きしてもらうとダウンロード URL が送られてくる。

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

サーバー証明書のインストール

nginx の場合は下記を見れば良いようだ。

https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=26192449

サーバー証明書は server.crt という名前で保存とあるが毎年更新していくと分かりにくそうなので xxx.nagaokaut.ac.jp-2024.cer としておこう。

中間証明書が必要なので下記からダウンロードする。

https://repo1.secomtrust.net/sppca/nii/odca4/index.html

RSA の場合は下記だ。

https://repo1.secomtrust.net/sppca/nii/odca4/pem/nii-odca4g7rsa.cer

興味深いので証明書の内容を確認してみる。

コマンド
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
薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

証明書の検証作業

Web ブラウザでアクセスして証明書ビューアで有効期間などを確認すれば良い。


これは xxx.nagaokaut.ac.jp ではない別のサーバーだが

薄田達哉 / tatsuyasusukida薄田達哉 / tatsuyasusukida

サーバー証明書の置き換え通知

情報処理担当の方に「xxx.nagaokaut.ac.jp」のサーバー証明書の更新が完了しましたとメールなどをすれば良いだろう。

このスクラップは5ヶ月前にクローズされました