電子証明書について
お仕事で、電子証明書ファイルの情報について調べてみた。
●opensslのコマンドでPKCS12ファイルを作ってみて、中身を見る
openssl req -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/C=JP/ST=SAITAMA/L=KOSIGAYA/O=COMPANY/OU=JIGYOUBU/CN=BU/title=title1/SN=surname1/GN=givenname1/initials=initial1/emailAddress=test1@test.com" -config ./openssl.cfg -keyout test.pem -out test.crt openssl pkcs12 -export -in test.crt -inkey test.pem -out test.p12 openssl x509 -text -in test.crt
●opensslのコマンドでPKCS12ファイルまで作ってみる。
D:\cert>openssl req -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/C=JP/ST=SAITAMA/L=KOSIGAYA/O=COMPANY/OU=JIGYOUBU/CN=BU/title=title1/SN=surname1/GN=givenname1/initials=initial1/emailAddress=test1@test.com" -config ./openssl.cfg -keyout test.pem -out test.crt Generating a 2048 bit RSA private key ........................+++ ....................+++ writing new private key to 'test.pem' ----- D:\cert>openssl pkcs12 -export -in test.crt -inkey test.pem -out test.p12 Enter Export Password: Verifying - Enter Export Password: D:\cert>dir ドライブ D のボリューム ラベルがありません。 ボリューム シリアル番号は 86F4-1821 です D:\cert のディレクトリ 2018/07/01 14:56. 2018/07/01 14:56
.. 2018/07/01 14:56 1,024 .rnd 2018/07/01 14:37 11,198 openssl.cfg 2018/07/01 14:56 1,604 test.crt 2018/07/01 14:56 2,725 test.p12 2018/07/01 14:56 1,732 test.pem 5 個のファイル 18,283 バイト 2 個のディレクトリ 124,596,654,080 バイトの空き領域
●opensslコマンドでcrtファイルの内容を見てみる。
D:\cert>openssl x509 -text -in test.crt Certificate: Data: Version: 3 (0x2) Serial Number: 99:67:4f:bc:78:d5:f7:4b Signature Algorithm: sha256WithRSAEncryption Issuer: C = JP, ST = SAITAMA, L = KOSIGAYA, O = COMPANY, OU = JIGYOUBU,CN = BU, title = title1, SN = surname1, GN = givenname1, initials = initial1, emailAddress = test1@test.com Validity Not Before: Jul 1 06:41:33 2018 GMT Not After : Jun 28 06:41:33 2028 GMT Subject: C = JP, ST = SAITAMA, L = KOSIGAYA, O = COMPANY, OU = JIGYOUBU, CN = BU, title = title1, SN = surname1, GN = givenname1, initials = initial1, emailAddress = test1@test.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:da:7e:c9:0b:f6:60:ff:c0:42:b1:7c:2a:59:0f: 5a:89:4a:f7:50:52:20:35:c4:20:8a:e9:c0:b5:22: d9:e0:f0:e3:a0:01:bc:6e:74:a0:88:b1:55:b3:b5: a5:e9:94:21:28:dc:20:fe:1f:8f:66:a4:25:10:83: a5:4e:53:25:2c:80:b4:d2:7f:01:b7:fa:17:ec:83: 84:d3:84:5e:05:81:ac:fa:a9:c7:27:19:72:ec:ba: 66:7e:0b:33:63:e3:b0:c8:77:88:b9:21:e3:48:6c: df:89:55:1d:7f:9b:e9:73:4f:da:78:0c:d1:25:88: d3:18:24:57:9c:73:0e:22:e6:da:53:f9:33:42:bc: 9c:e4:59:80:81:3c:7f:27:3f:d7:5b:52:95:db:94: 5d:b7:33:b4:56:d6:ea:53:bd:74:82:92:51:dc:bb: 68:64:74:8c:52:91:75:39:a2:5f:dd:77:0b:c5:79: 59:28:09:5f:87:eb:d6:0c:bc:fe:16:e7:55:b4:38: a6:45:f5:9f:aa:06:95:6c:90:e3:16:38:96:b6:ad: 0e:bf:55:39:1b:65:12:78:91:15:fb:90:93:a8:26: 74:67:4a:77:f2:fe:e5:37:d1:4c:a1:8d:a7:6d:98: 56:9e:9b:c8:74:7f:62:fb:a2:f6:1d:ff:97:ca:58: 69:91 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: FD:36:CA:12:16:EC:C9:62:B9:15:33:D3:A3:A8:11:10:2B:43:5C:16 X509v3 Authority Key Identifier: keyid:FD:36:CA:12:16:EC:C9:62:B9:15:33:D3:A3:A8:11:10:2B:43:5C:16 X509v3 Basic Constraints: critical CA:TRUE Signature Algorithm: sha256WithRSAEncryption 22:87:e4:5e:43:31:4f:4b:ea:51:ee:dc:d5:a9:0d:c3:85:df: d5:b9:80:f5:6f:a1:b4:0a:e7:8e:8c:c5:0c:2d:be:ad:c7:50: ab:df:38:1e:ae:73:7a:33:b9:48:02:d8:9d:98:57:a7:ed:09: 15:ff:22:fe:4c:ee:a0:54:6e:34:b6:2f:ca:1c:19:03:97:8f: 67:72:3a:81:ae:8a:dd:fe:67:2e:b8:2e:48:04:ad:ce:a6:a0: 69:3a:e7:67:b1:79:4a:cd:33:91:1e:98:30:56:f0:14:4c:5a: dd:97:b8:7a:98:7a:dc:31:60:fd:e6:bd:a0:6b:5e:6f:9e:5b: b9:3f:b9:81:f1:89:15:b5:60:e4:40:40:f7:10:90:d9:46:68: 44:3b:ac:6d:55:0b:52:50:01:d5:71:0b:3e:9e:3c:35:06:f5: e1:f0:12:97:c5:41:45:9c:5b:7c:a0:9f:e4:64:36:8d:25:c5: 11:7a:d3:f7:8b:ee:6b:00:c5:3f:dd:60:78:ae:20:d6:48:44: 44:a5:35:cc:d9:73:d1:ee:c7:80:f3:7b:91:49:f8:65:a5:ab: 93:a9:fc:ec:b1:cf:eb:fb:5f:88:47:e3:64:c6:e4:69:c4:f2: 96:67:bb:28:ec:28:e2:ad:f5:89:3a:3b:31:63:95:d5:5e:df: 4b:2d:c9:95 -----BEGIN CERTIFICATE----- MIIEdjCCA16gAwIBAgIJAJlnT7x41fdLMA0GCSqGSIb3DQEBCwUAMIHPMQswCQYD VQQGEwJKUDEQMA4GA1UECAwHU0FJVEFNQTERMA8GA1UEBwwIS09TSUdBWUExEDAO BgNVBAoMB0NPTVBBTlkxETAPBgNVBAsMCEpJR1lPVUJVMQswCQYDVQQDDAJCVTEP MA0GA1UEDAwGdGl0bGUxMREwDwYDVQQEDAhzdXJuYW1lMTETMBEGA1UEKgwKZ2l2 ZW5uYW1lMTERMA8GA1UEKwwIaW5pdGlhbDExHTAbBgkqhkiG9w0BCQEWDnRlc3Qx QHRlc3QuY29tMB4XDTE4MDcwMTA2NDEzM1oXDTI4MDYyODA2NDEzM1owgc8xCzAJ BgNVBAYTAkpQMRAwDgYDVQQIDAdTQUlUQU1BMREwDwYDVQQHDAhLT1NJR0FZQTEQ MA4GA1UECgwHQ09NUEFOWTERMA8GA1UECwwISklHWU9VQlUxCzAJBgNVBAMMAkJV MQ8wDQYDVQQMDAZ0aXRsZTExETAPBgNVBAQMCHN1cm5hbWUxMRMwEQYDVQQqDApn aXZlbm5hbWUxMREwDwYDVQQrDAhpbml0aWFsMTEdMBsGCSqGSIb3DQEJARYOdGVz dDFAdGVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDafskL 9mD/wEKxfCpZD1qJSvdQUiA1xCCK6cC1Itng8OOgAbxudKCIsVWztaXplCEo3CD+ H49mpCUQg6VOUyUsgLTSfwG3+hfsg4TThF4Fgaz6qccnGXLsumZ+CzNj47DId4i5 IeNIbN+JVR1/m+lzT9p4DNEliNMYJFeccw4i5tpT+TNCvJzkWYCBPH8nP9dbUpXb lF23M7RW1upTvXSCklHcu2hkdIxSkXU5ol/ddwvFeVkoCV+H69YMvP4W51W0OKZF 9Z+qBpVskOMWOJa2rQ6/VTkbZRJ4kRX7kJOoJnRnSnfy/uU30UyhjadtmFaem8h0 f2L7ovYd/5fKWGmRAgMBAAGjUzBRMB0GA1UdDgQWBBT9NsoSFuzJYrkVM9OjqBEQ K0NcFjAfBgNVHSMEGDAWgBT9NsoSFuzJYrkVM9OjqBEQK0NcFjAPBgNVHRMBAf8E BTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAih+ReQzFPS+pR7tzVqQ3Dhd/VuYD1 b6G0CueOjMUMLb6tx1Cr3zgernN6M7lIAtidmFen7QkV/yL+TO6gVG40ti/KHBkD l49ncjqBrord/mcuuC5IBK3OpqBpOudnsXlKzTORHpgwVvAUTFrdl7h6mHrcMWD9 5r2ga15vnlu5P7mB8YkVtWDkQED3EJDZRmhEO6xtVQtSUAHVcQs+njw1BvXh8BKX xUFFnFt8oJ/kZDaNJcURetP3i+5rAMU/3WB4riDWSEREpTXM2XPR7seA83uRSfhl pauTqfzssc/r+1+IR+NkxuRpxPKWZ7so7CjirfWJOjsxY5XVXt9LLcmV -----END CERTIFICATE-----
●Powershellで公開鍵証明書の情報をASN.1として取得してみる
function dispASN1($x509bytes) { write-host "dispASN1 start" $enc = [system.Text.Encoding]::GetEncoding("UTF-8") $i=0 while($i -lt $x509bytes.length) { # get class & tagid(p/c) $class=($x509bytes[$i] -band 0xC0) $pc=($x509bytes[$i] -band 0x20) $tagid=($x509bytes[$i] -band 0x1f) $i++ # get length $len=0 if(($x509bytes[$i] -band 0x80) -eq 0x80) { $cnt=$x509bytes[$i] -band 0x7f $i++ for($j=0; $j -lt $cnt; $j++) { $len=$len*0x100+$x509bytes[$i] $i++ } } else { $len=$x509bytes[$i] $i++ } $d=@() #if(($pc -eq 0) -and (($tagid -ne 0x00) -and ($tagid -ne 0x10) -and ($tagid -ne 0x11))) { if((($tagid -ne 0x00) -and ($tagid -ne 0x10) -and ($tagid -ne 0x11))) { for($j=0;$j -lt $len;$j++){ $d += $x509bytes[$i] $i++ } } write-host("class={0:x2} p/c={1:x2} tagid={2:x2} len={3} i={4}" -F $class, $pc, $tagid, $len, $i) if($class -eq 0) { switch($tagid) { {$_ -eq 0x02} { # INTEGER $d1=0 for($j=0;$j -lt $len; $j++) { $d1=$d1*0x100+$d[$j] } write-host("{0}" -F $d1) } #{($_ -eq 0x04) -and ($pc -ne 0)} { # OCTET STRING {$_ -eq 0x04} { # OCTET STRING if ($pc -eq 0) { foreach($d1 in $d) { write-host -nonewline ("{0:x2} " -F $d1)} if($d.count -gt 0) {write-host} } else { dipASN1 $d } break } {$_ -eq 0x06} { # OID write-host -nonewline ("{0}.{1}" -F ([math]::Floor($d[0]/40)), ($d[0]%40)) $id=0 for($j=1;$j -lt $len; $j++) { $id = $id*128+($d[$j] -band 0x7f) if(($d[$j] -band 0x80) -ne 0x80) { write-host -nonewline (".{0}" -F $id) $id=0 } } write-host break } {($_ -eq 0x10) -or ($_ -eq 0x11)} { break } default { foreach($d1 in $d) { write-host -nonewline ("{0:x2} " -F $d1)} if($d.count -gt 0) {write-host} } } } else { foreach($d1 in $d) { write-host -nonewline ("{0:x2} " -F $d1)} write-host } } write-host "dispASN1 end" } if ($args.count -ne 1) { write-host "Invalid Argment. Perase set P12 File" return } $x509data = Get-PfxCertificate $args[0] $certData = $x509data.GetRawCertData() #$file="D:\work\暗号\my-identity.p12" #$certData=@();[System.IO.File]::ReadAllBytes($file) | %{"{0:x2}" -F $_ }| %{$certData += [Convert]::ToByte("0x" + $_, 16)} dispASN1 $certData
●その結果
PS D:\cert> .\dispASN1.ps1 .\test.p12 パスワードの入力: **** dispASN1 start class=00 p/c=20 tagid=10 len=1142 i=4 class=00 p/c=20 tagid=10 len=862 i=8 class=80 p/c=20 tagid=00 len=3 i=10 class=00 p/c=00 tagid=02 len=1 i=13 2 class=00 p/c=00 tagid=02 len=9 i=24 1.10538914813039E+19 class=00 p/c=20 tagid=10 len=13 i=26 class=00 p/c=00 tagid=06 len=9 i=37 1.2.840.113549.1.1.11 class=00 p/c=00 tagid=05 len=0 i=39 class=00 p/c=20 tagid=10 len=207 i=42 class=00 p/c=20 tagid=11 len=11 i=44 class=00 p/c=20 tagid=10 len=9 i=46 class=00 p/c=00 tagid=06 len=3 i=51 2.5.4.6 class=00 p/c=00 tagid=13 len=2 i=55 4a 50 class=00 p/c=20 tagid=11 len=16 i=57 class=00 p/c=20 tagid=10 len=14 i=59 class=00 p/c=00 tagid=06 len=3 i=64 2.5.4.8 class=00 p/c=00 tagid=0c len=7 i=73 53 41 49 54 41 4d 41 class=00 p/c=20 tagid=11 len=17 i=75 class=00 p/c=20 tagid=10 len=15 i=77 class=00 p/c=00 tagid=06 len=3 i=82 2.5.4.7 class=00 p/c=00 tagid=0c len=8 i=92 4b 4f 53 49 47 41 59 41 class=00 p/c=20 tagid=11 len=16 i=94 class=00 p/c=20 tagid=10 len=14 i=96 class=00 p/c=00 tagid=06 len=3 i=101 2.5.4.10 class=00 p/c=00 tagid=0c len=7 i=110 43 4f 4d 50 41 4e 59 class=00 p/c=20 tagid=11 len=17 i=112 class=00 p/c=20 tagid=10 len=15 i=114 class=00 p/c=00 tagid=06 len=3 i=119 2.5.4.11 class=00 p/c=00 tagid=0c len=8 i=129 4a 49 47 59 4f 55 42 55 class=00 p/c=20 tagid=11 len=11 i=131 class=00 p/c=20 tagid=10 len=9 i=133 class=00 p/c=00 tagid=06 len=3 i=138 2.5.4.3 class=00 p/c=00 tagid=0c len=2 i=142 42 55 class=00 p/c=20 tagid=11 len=15 i=144 class=00 p/c=20 tagid=10 len=13 i=146 class=00 p/c=00 tagid=06 len=3 i=151 2.5.4.12 class=00 p/c=00 tagid=0c len=6 i=159 74 69 74 6c 65 31 class=00 p/c=20 tagid=11 len=17 i=161 class=00 p/c=20 tagid=10 len=15 i=163 class=00 p/c=00 tagid=06 len=3 i=168 2.5.4.4 class=00 p/c=00 tagid=0c len=8 i=178 73 75 72 6e 61 6d 65 31 class=00 p/c=20 tagid=11 len=19 i=180 class=00 p/c=20 tagid=10 len=17 i=182 class=00 p/c=00 tagid=06 len=3 i=187 2.5.4.42 class=00 p/c=00 tagid=0c len=10 i=199 67 69 76 65 6e 6e 61 6d 65 31 class=00 p/c=20 tagid=11 len=17 i=201 class=00 p/c=20 tagid=10 len=15 i=203 class=00 p/c=00 tagid=06 len=3 i=208 2.5.4.43 class=00 p/c=00 tagid=0c len=8 i=218 69 6e 69 74 69 61 6c 31 class=00 p/c=20 tagid=11 len=29 i=220 class=00 p/c=20 tagid=10 len=27 i=222 class=00 p/c=00 tagid=06 len=9 i=233 1.2.840.113549.1.9.1 class=00 p/c=00 tagid=16 len=14 i=249 74 65 73 74 31 40 74 65 73 74 2e 63 6f 6d class=00 p/c=20 tagid=10 len=30 i=251 class=00 p/c=00 tagid=17 len=13 i=266 31 38 30 37 30 31 30 36 34 31 33 33 5a class=00 p/c=00 tagid=17 len=13 i=281 32 38 30 36 32 38 30 36 34 31 33 33 5a class=00 p/c=20 tagid=10 len=207 i=284 class=00 p/c=20 tagid=11 len=11 i=286 class=00 p/c=20 tagid=10 len=9 i=288 class=00 p/c=00 tagid=06 len=3 i=293 2.5.4.6 class=00 p/c=00 tagid=13 len=2 i=297 4a 50 class=00 p/c=20 tagid=11 len=16 i=299 class=00 p/c=20 tagid=10 len=14 i=301 class=00 p/c=00 tagid=06 len=3 i=306 2.5.4.8 class=00 p/c=00 tagid=0c len=7 i=315 53 41 49 54 41 4d 41 class=00 p/c=20 tagid=11 len=17 i=317 class=00 p/c=20 tagid=10 len=15 i=319 class=00 p/c=00 tagid=06 len=3 i=324 2.5.4.7 class=00 p/c=00 tagid=0c len=8 i=334 4b 4f 53 49 47 41 59 41 class=00 p/c=20 tagid=11 len=16 i=336 class=00 p/c=20 tagid=10 len=14 i=338 class=00 p/c=00 tagid=06 len=3 i=343 2.5.4.10 class=00 p/c=00 tagid=0c len=7 i=352 43 4f 4d 50 41 4e 59 class=00 p/c=20 tagid=11 len=17 i=354 class=00 p/c=20 tagid=10 len=15 i=356 class=00 p/c=00 tagid=06 len=3 i=361 2.5.4.11 class=00 p/c=00 tagid=0c len=8 i=371 4a 49 47 59 4f 55 42 55 class=00 p/c=20 tagid=11 len=11 i=373 class=00 p/c=20 tagid=10 len=9 i=375 class=00 p/c=00 tagid=06 len=3 i=380 2.5.4.3 class=00 p/c=00 tagid=0c len=2 i=384 42 55 class=00 p/c=20 tagid=11 len=15 i=386 class=00 p/c=20 tagid=10 len=13 i=388 class=00 p/c=00 tagid=06 len=3 i=393 2.5.4.12 class=00 p/c=00 tagid=0c len=6 i=401 74 69 74 6c 65 31 class=00 p/c=20 tagid=11 len=17 i=403 class=00 p/c=20 tagid=10 len=15 i=405 class=00 p/c=00 tagid=06 len=3 i=410 2.5.4.4 class=00 p/c=00 tagid=0c len=8 i=420 73 75 72 6e 61 6d 65 31 class=00 p/c=20 tagid=11 len=19 i=422 class=00 p/c=20 tagid=10 len=17 i=424 class=00 p/c=00 tagid=06 len=3 i=429 2.5.4.42 class=00 p/c=00 tagid=0c len=10 i=441 67 69 76 65 6e 6e 61 6d 65 31 class=00 p/c=20 tagid=11 len=17 i=443 class=00 p/c=20 tagid=10 len=15 i=445 class=00 p/c=00 tagid=06 len=3 i=450 2.5.4.43 class=00 p/c=00 tagid=0c len=8 i=460 69 6e 69 74 69 61 6c 31 class=00 p/c=20 tagid=11 len=29 i=462 class=00 p/c=20 tagid=10 len=27 i=464 class=00 p/c=00 tagid=06 len=9 i=475 1.2.840.113549.1.9.1 class=00 p/c=00 tagid=16 len=14 i=491 74 65 73 74 31 40 74 65 73 74 2e 63 6f 6d class=00 p/c=20 tagid=10 len=290 i=495 class=00 p/c=20 tagid=10 len=13 i=497 class=00 p/c=00 tagid=06 len=9 i=508 1.2.840.113549.1.1.1 class=00 p/c=00 tagid=05 len=0 i=510 class=00 p/c=00 tagid=03 len=271 i=785 00 30 82 01 0a 02 82 01 01 00 da 7e c9 0b f6 60 ff c0 42 b1 7c 2a 59 0f 5a 89 4a f7 50 52 20 35 c4 20 8a e9 c0 b5 22 d9 e0 f0 e3 a0 01 bc 6e 74 a0 88 b1 55 b3 b5 a5 e9 94 21 28 dc 20 fe 1f 8f 66 a4 25 10 83 a5 4e 53 25 2c 80 b4 d2 7f 01 b7 fa 17 ec 83 84 d3 84 5e 05 81 ac fa a9 c7 27 19 72 ec ba 66 7e 0b 33 63 e3 b0 c8 77 88 b9 21 e3 48 6c df 89 55 1d 7f 9b e9 73 4f da 78 0c d1 25 88 d3 18 24 57 9c 73 0e 22 e6 da 53 f9 33 42 bc 9c e4 59 80 81 3c 7f 27 3f d7 5b 52 95 db 94 5d b7 33 b4 56 d6 ea 53 bd 74 82 92 51 dc bb 68 64 74 8c 52 91 75 39 a2 5f dd 77 0b c5 79 59 28 09 5f 87 eb d6 0c bc fe 16 e7 55 b4 38 a6 45 f5 9f aa 06 95 6c 90 e3 16 38 96 b6 ad 0e bf 55 39 1b 65 12 78 91 15 fb 90 93 a8 26 74 67 4a 77 f2 fe e5 37 d1 4c a1 8d a7 6d 98 56 9e 9b c8 74 7f 62 fb a2 f6 1d ff 97 ca 58 69 91 02 03 01 00 01 class=80 p/c=20 tagid=03 len=83 i=870 30 51 30 1d 06 03 55 1d 0e 04 16 04 14 fd 36 ca 12 16 ec c9 62 b9 15 33 d3 a3 a8 11 10 2b 43 5c 16 30 1f 06 03 55 1d 23 04 18 30 16 80 14 fd 36 ca 12 16 ec c9 62 b9 15 33 d3 a3 a8 11 10 2b 43 5c 16 30 0f 06 03 55 1d 13 01 01 ff 04 05 30 03 01 01 ff class=00 p/c=20 tagid=10 len=13 i=872 class=00 p/c=00 tagid=06 len=9 i=883 1.2.840.113549.1.1.11 class=00 p/c=00 tagid=05 len=0 i=885 class=00 p/c=00 tagid=03 len=257 i=1146 00 22 87 e4 5e 43 31 4f 4b ea 51 ee dc d5 a9 0d c3 85 df d5 b9 80 f5 6f a1 b4 0a e7 8e 8c c5 0c 2d be ad c7 50 ab df 38 1e ae 73 7a 33 b9 48 02 d8 9d 98 57 a7 ed 09 15 ff 22 fe 4c ee a0 54 6e 34 b6 2f ca 1c 19 03 97 8f 67 72 3a 81 ae 8a dd fe 67 2e b8 2e 48 04 ad ce a6 a0 69 3a e7 67 b1 79 4a cd 33 91 1e 98 30 56 f0 14 4c 5a dd 97 b8 7a 98 7a dc 31 60 fd e6 bd a0 6b 5e 6f 9e 5b b9 3f b9 81 f1 89 15 b5 60 e4 40 40 f7 10 90 d9 46 68 44 3b ac 6d 55 0b 52 50 01 d5 71 0b 3e 9e 3c 35 06 f5 e1 f0 12 97 c5 41 45 9c 5b 7c a0 9f e4 64 36 8d 25 c5 11 7a d3 f7 8b ee 6b 00 c5 3f dd 60 78 ae 20 d6 48 44 44 a5 35 cc d9 73 d1 ee c7 80 f3 7b 91 49 f8 65 a5 ab 93 a9 fc ec b1 cf eb fb 5f 88 47 e3 64 c6 e4 69 c4 f2 96 67 bb 28 ec 28 e2 ad f5 89 3a 3b 31 63 95 d5 5e df 4b 2d c9 95 dispASN1 end
« 平成30年度春期情報処理技術者試験プロジェクトマネージャの結果 | トップページ | 電子証明書について その2 »
« 平成30年度春期情報処理技術者試験プロジェクトマネージャの結果 | トップページ | 電子証明書について その2 »
コメント