首页 > 解决方案 > 如何在 Ruby 中读取证书详细信息?

问题描述

我需要使用 Ruby 获取详细的证书信息。我有以下测试证书。

-----BEGIN CERTIFICATE-----
MIIDBzCCAe+gAwIBAgIJAPO77qM0KOtJMA0GCSqGSIb3DQEBCwUAMBoxGDAWBgNV
BAMMD3d3dy5leGFtcGxlLmNvbTAeFw0xOTA4MjQxNTQxMzJaFw0yOTA4MjExNTQx
MzJaMBoxGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAKdG8NkRftFf+UYFGLxvpenNtmjDqXFgchf/RjdCEDfl
1lFzfM6gxojh4gq5dkYpzZeNGKtBsLEmmIaHYSZa92YBhSXh7EXbi3MCcJqo6rzn
LWXHJfKP+PGNORrDxbIhrcr/QDNnFAYG/V5G58OqqqVaMuZUwvrtXJD38ysyGud7
SQz4kYQOvX654DiMDe8JzSAY6ucvZ+VP0hBCGzY+m5flMjBxQQBJMOL2pW6Clm2S
YLh+juatyKRcyFaMBOapWHkmUJoV9eWQoXramfDzNuBeQESeuvz/OzXwGdLKlteP
V0EIzkMinEtHA8X8FS7GEjZsfUBJZysURNBVUKCpltkCAwEAAaNQME4wHQYDVR0O
BBYEFArrFXDrPnY2jY1z1G/hdpFzRY6iMB8GA1UdIwQYMBaAFArrFXDrPnY2jY1z
1G/hdpFzRY6iMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFRTTMv6
Qcs822DXvqSM47+Bz4n+KrSP+L+yI8htH0SgSrgqF3fa3V9ro/B+EFh+bdp6YOw/
JwM6lRD91jqrRfI1DqwxDquK+euBPj4FFrJfg4MmqjbHb7XjLwmk3mUgmnDPP1Kr
R5hkMxQ9qbIcZY7C4uF6Y1J1am7QMBT4Bvkt0YkAWk94HxKuK+6j3YoB1CWrwyxc
oj2FQIfod3zpU8U7y9X/maXxHWYI9IUOZKJvf/KVaRJwsN687L2OASRuSkOGRzAk
/tc7fjuaRiq1/E9SLUtnGRkxgEUEzXUKrGyDrGI8Aqekx5PRts+MTxGRPRawQIOf
seHvhKKVYqMY2Q8=
-----END CERTIFICATE-----

我想要的输出如下。

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 17562893556583557961 (0xf3bbeea33428eb49)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer:
            commonName                = www.example.com
        Validity
            Not Before: Aug 24 15:41:32 2019 GMT
            Not After : Aug 21 15:41:32 2029 GMT
        Subject:
            commonName                = www.example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:a7:46:f0:d9:11:7e:d1:5f:f9:46:05:18:bc:6f:
                    a5:e9:cd:b6:68:c3:a9:71:60:72:17:ff:46:37:42:
                    10:37:e5:d6:51:73:7c:ce:a0:c6:88:e1:e2:0a:b9:
                    76:46:29:cd:97:8d:18:ab:41:b0:b1:26:98:86:87:
                    61:26:5a:f7:66:01:85:25:e1:ec:45:db:8b:73:02:
                    70:9a:a8:ea:bc:e7:2d:65:c7:25:f2:8f:f8:f1:8d:
                    39:1a:c3:c5:b2:21:ad:ca:ff:40:33:67:14:06:06:
                    fd:5e:46:e7:c3:aa:aa:a5:5a:32:e6:54:c2:fa:ed:
                    5c:90:f7:f3:2b:32:1a:e7:7b:49:0c:f8:91:84:0e:
                    bd:7e:b9:e0:38:8c:0d:ef:09:cd:20:18:ea:e7:2f:
                    67:e5:4f:d2:10:42:1b:36:3e:9b:97:e5:32:30:71:
                    41:00:49:30:e2:f6:a5:6e:82:96:6d:92:60:b8:7e:
                    8e:e6:ad:c8:a4:5c:c8:56:8c:04:e6:a9:58:79:26:
                    50:9a:15:f5:e5:90:a1:7a:da:99:f0:f3:36:e0:5e:
                    40:44:9e:ba:fc:ff:3b:35:f0:19:d2:ca:96:d7:8f:
                    57:41:08:ce:43:22:9c:4b:47:03:c5:fc:15:2e:c6:
                    12:36:6c:7d:40:49:67:2b:14:44:d0:55:50:a0:a9:
                    96:d9
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                0A:EB:15:70:EB:3E:76:36:8D:8D:73:D4:6F:E1:76:91:73:45:8E:A2
            X509v3 Authority Key Identifier: 
                keyid:0A:EB:15:70:EB:3E:76:36:8D:8D:73:D4:6F:E1:76:91:73:45:8E:A2

            X509v3 Basic Constraints: 
                CA:TRUE
    Signature Algorithm: sha256WithRSAEncryption
         54:53:4c:cb:fa:41:cb:3c:db:60:d7:be:a4:8c:e3:bf:81:cf:
         89:fe:2a:b4:8f:f8:bf:b2:23:c8:6d:1f:44:a0:4a:b8:2a:17:
         77:da:dd:5f:6b:a3:f0:7e:10:58:7e:6d:da:7a:60:ec:3f:27:
         03:3a:95:10:fd:d6:3a:ab:45:f2:35:0e:ac:31:0e:ab:8a:f9:
         eb:81:3e:3e:05:16:b2:5f:83:83:26:aa:36:c7:6f:b5:e3:2f:
         09:a4:de:65:20:9a:70:cf:3f:52:ab:47:98:64:33:14:3d:a9:
         b2:1c:65:8e:c2:e2:e1:7a:63:52:75:6a:6e:d0:30:14:f8:06:
         f9:2d:d1:89:00:5a:4f:78:1f:12:ae:2b:ee:a3:dd:8a:01:d4:
         25:ab:c3:2c:5c:a2:3d:85:40:87:e8:77:7c:e9:53:c5:3b:cb:
         d5:ff:99:a5:f1:1d:66:08:f4:85:0e:64:a2:6f:7f:f2:95:69:
         12:70:b0:de:bc:ec:bd:8e:01:24:6e:4a:43:86:47:30:24:fe:
         d7:3b:7e:3b:9a:46:2a:b5:fc:4f:52:2d:4b:67:19:19:31:80:
         45:04:cd:75:0a:ac:6c:83:ac:62:3c:02:a7:a4:c7:93:d1:b6:
         cf:8c:4f:11:91:3d:16:b0:40:83:9f:b1:e1:ef:84:a2:95:62:
         a3:18:d9:0f
-----BEGIN CERTIFICATE-----
MIIDBzCCAe+gAwIBAgIJAPO77qM0KOtJMA0GCSqGSIb3DQEBCwUAMBoxGDAWBgNV
BAMMD3d3dy5leGFtcGxlLmNvbTAeFw0xOTA4MjQxNTQxMzJaFw0yOTA4MjExNTQx
MzJaMBoxGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAKdG8NkRftFf+UYFGLxvpenNtmjDqXFgchf/RjdCEDfl
1lFzfM6gxojh4gq5dkYpzZeNGKtBsLEmmIaHYSZa92YBhSXh7EXbi3MCcJqo6rzn
LWXHJfKP+PGNORrDxbIhrcr/QDNnFAYG/V5G58OqqqVaMuZUwvrtXJD38ysyGud7
SQz4kYQOvX654DiMDe8JzSAY6ucvZ+VP0hBCGzY+m5flMjBxQQBJMOL2pW6Clm2S
YLh+juatyKRcyFaMBOapWHkmUJoV9eWQoXramfDzNuBeQESeuvz/OzXwGdLKlteP
V0EIzkMinEtHA8X8FS7GEjZsfUBJZysURNBVUKCpltkCAwEAAaNQME4wHQYDVR0O
BBYEFArrFXDrPnY2jY1z1G/hdpFzRY6iMB8GA1UdIwQYMBaAFArrFXDrPnY2jY1z
1G/hdpFzRY6iMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFRTTMv6
Qcs822DXvqSM47+Bz4n+KrSP+L+yI8htH0SgSrgqF3fa3V9ro/B+EFh+bdp6YOw/
JwM6lRD91jqrRfI1DqwxDquK+euBPj4FFrJfg4MmqjbHb7XjLwmk3mUgmnDPP1Kr
R5hkMxQ9qbIcZY7C4uF6Y1J1am7QMBT4Bvkt0YkAWk94HxKuK+6j3YoB1CWrwyxc
oj2FQIfod3zpU8U7y9X/maXxHWYI9IUOZKJvf/KVaRJwsN687L2OASRuSkOGRzAk
/tc7fjuaRiq1/E9SLUtnGRkxgEUEzXUKrGyDrGI8Aqekx5PRts+MTxGRPRawQIOf
seHvhKKVYqMY2Q8=
-----END CERTIFICATE-----

我需要从该证书中获取“主题公钥信息”和“模数”数据。

我正在使用OpenSSL::X509::Certificate.new(certificate_date)仅提供与主题、发行人、到期等相关的信息。或者我无法获得上述所需信息。以上信息我需要在 ECDH 加密中使用。有人可以帮忙吗?

标签: rubyopenssl

解决方案


推荐阅读