X.509証明書を表示するRubyスクリプト

証明書(公開鍵にデジタル署名を施したもの)を表示するRubyスクリプトです。ファイルbobby.cerに証明書が入っているものとします。

# show_cert.rb
require 'openssl'

cert = OpenSSL::X509::Certificate.new(File.open('bobby.cer'))
print cert.to_text

実行結果です。bobby.cerはベリサイン(テスト用Class1 Digital ID)で作りました。

C:\work> type bobby.cer
-----BEGIN CERTIFICATE-----
MIIErzCCA5egAwIBAgIQJgw86jsWmGPeUT4qT+TWKjANBgkqhkiG9w0BAQUFADCB
3TELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug
YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNTEeMBwGA1UECxMV
UGVyc29uYSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJpU2lnbiBDbGFzcyAx
IEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQSAtIEcyMB4XDTA4MDcxNTAwMDAwMFoX
DTA4MDkxMzIzNTk1OVowgf0xFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYD
VQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMUYwRAYDVQQLEz13d3cudmVyaXNp
Z24uY29tL3JlcG9zaXRvcnkvUlBBIEluY29ycC4gYnkgUmVmLixMSUFCLkxURChj
KTk4MR4wHAYDVQQLExVQZXJzb25hIE5vdCBWYWxpZGF0ZWQxJzAlBgNVBAsTHkRp
Z2l0YWwgSUQgQ2xhc3MgMSAtIE1pY3Jvc29mdDEQMA4GA1UEAxQHQm9iIERvZTEe
MBwGCSqGSIb3DQEJARYPYm9iYnlAaHl1a2kuY29tMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQDxJAQlUI1s691PGivYWxSDFb2QO0/tR9M53SOpxYiEaHoaVDEz
NetXw9ekj0SkudFcg3yJGMqgovhH4oCvlKyDockkXiIp4esudRzWiU17E7HqtbT4
KB6CnNoG+5/9BqrdY20jc2auGMhOY8Yp24GsH6N+cp6Ra9DRq36XlrsrMQIDAQAB
o4HMMIHJMAkGA1UdEwQCMAAwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXAzAqMCgG
CCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMAsGA1UdDwQE
AwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwSgYDVR0fBEMwQTA/
oD2gO4Y5aHR0cDovL0luZEMxRGlnaXRhbElELWNybC52ZXJpc2lnbi5jb20vSW5k
QzFEaWdpdGFsSUQuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQA6dUQ7WLLa5alLPnJl
yb76hFsDs+QRfpl9kBjCL7p1d/ZIfsXYn4qm/0QIBLQMNoHPtmqyniaq5BE5pLYg
4aflrUvGiDZLUQp9Pxe5Kd6yw81T9SsaeOTWpf2AUJGRk5cAU/bRKpYY/3VO+iqs
JzU3o4xZFJEk/YrF3ZJQB6B6GosW0QR4wVBGo1T+Hdw16zMp4Y0w6mZasDov6pxM
e6OIAqAQhanTl2pPDqGv3QU6Q38vzmLE+ueLP6VXbuKma3y8aXhOlLTrdDXwejRY
kRpNVvK+T003GpiX0kv0HRsp+f6o6joT5ZPI0EqfQHaqvmTZyNkxk5SRAM63L7s8
E9kt
-----END CERTIFICATE-----

C:\work> ruby show_cert.rb
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            26:0c:3c:ea:3b:16:98:63:de:51:3e:2a:4f:e4:d6:2a
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=Terms of use at https://www.verisign.com/rpa (c)05, OU=Persona Not Validated, CN=VeriSign Class 1 Individual Subscriber CA - G2
        Validity
            Not Before: Jul 15 00:00:00 2008 GMT
            Not After : Sep 13 23:59:59 2008 GMT
        Subject: O=VeriSign, Inc., OU=VeriSign Trust Network, OU=www.verisign.com/repository/RPA Incorp. by Ref.,LIAB.LTD(c)98, OU=Persona Not Validated, OU=Digital ID Class 1 - Microsoft, CN=Bob Doe/emailAddress=bobby@hyuki.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:f1:24:04:25:50:8d:6c:eb:dd:4f:1a:2b:d8:5b:
                    14:83:15:bd:90:3b:4f:ed:47:d3:39:dd:23:a9:c5:
                    88:84:68:7a:1a:54:31:33:35:eb:57:c3:d7:a4:8f:
                    44:a4:b9:d1:5c:83:7c:89:18:ca:a0:a2:f8:47:e2:
                    80:af:94:ac:83:a1:c9:24:5e:22:29:e1:eb:2e:75:
                    1c:d6:89:4d:7b:13:b1:ea:b5:b4:f8:28:1e:82:9c:
                    da:06:fb:9f:fd:06:aa:dd:63:6d:23:73:66:ae:18:
                    c8:4e:63:c6:29:db:81:ac:1f:a3:7e:72:9e:91:6b:
                    d0:d1:ab:7e:97:96:bb:2b:31
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Certificate Policies:
                Policy: 2.16.840.1.113733.1.7.23.3
                  CPS: https://www.verisign.com/rpa

            X509v3 Key Usage:
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage:
                E-mail Protection, TLS Web Client Authentication
            X509v3 CRL Distribution Points:
                URI:http://IndC1DigitalID-crl.verisign.com/IndC1DigitalID.crl

    Signature Algorithm: sha1WithRSAEncryption
        3a:75:44:3b:58:b2:da:e5:a9:4b:3e:72:65:c9:be:fa:84:5b:
        03:b3:e4:11:7e:99:7d:90:18:c2:2f:ba:75:77:f6:48:7e:c5:
        d8:9f:8a:a6:ff:44:08:04:b4:0c:36:81:cf:b6:6a:b2:9e:26:
        aa:e4:11:39:a4:b6:20:e1:a7:e5:ad:4b:c6:88:36:4b:51:0a:
        7d:3f:17:b9:29:de:b2:c3:cd:53:f5:2b:1a:78:e4:d6:a5:fd:
        80:50:91:91:93:97:00:53:f6:d1:2a:96:18:ff:75:4e:fa:2a:
        ac:27:35:37:a3:8c:59:14:91:24:fd:8a:c5:dd:92:50:07:a0:
        7a:1a:8b:16:d1:04:78:c1:50:46:a3:54:fe:1d:dc:35:eb:33:
        29:e1:8d:30:ea:66:5a:b0:3a:2f:ea:9c:4c:7b:a3:88:02:a0:
        10:85:a9:d3:97:6a:4f:0e:a1:af:dd:05:3a:43:7f:2f:ce:62:
        c4:fa:e7:8b:3f:a5:57:6e:e2:a6:6b:7c:bc:69:78:4e:94:b4:
        eb:74:35:f0:7a:34:58:91:1a:4d:56:f2:be:4f:4d:37:1a:98:
        97:d2:4b:f4:1d:1b:29:f9:fe:a8:ea:3a:13:e5:93:c8:d0:4a:
        9f:40:76:aa:be:64:d9:c8:d9:31:93:94:91:00:ce:b7:2f:bb:
        3c:13:d9:2d