csr запрос на подпись серитификата

csr - (certificate signing request) , запрос на подпись . Запрос к родителю к естественно. То есть есть наша исходная пара ключей (сертификат 2). И надо чтобы сертификат 2 подписал некий сертификат 1, который станет в итоге для сертификата 2 родительским.

Выглядит запрос так , стандартное base64 форматирование :

-----BEGIN CERTIFICATE REQUEST-----
MIICazCCAVMCAQAwJjEXMBUGA1UEAwwOQklUIEtLVCBkcml2ZXIxCzAJBgNVBAYT
AlJVMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs5Ex0iuf6vqr3iBA
ZO4z0Oyf+EDiJy781IJnf9nOX9d7Ee9mk5q8ncJeo0KhSqJUEe3ku8HlUfwinoDJ
ukkhK88DT7ZKZ75yDvsbmQeZXN7mG2Ac0zTZApaY7Sfa6k7/sl9et0ewcI56FS/r
piXyr+MfjVvwIcJ5qctL7NQtdxkVeUPIKY7GXqDlrZ111+M5EPCIQh0N4iLHDGCi
MOeVmqwtxfiD5QPTDHbeseROMiRHB036BbD8msGLG3WBgnlEUa2cNFDFPFf9yUpe
u3K2IbFkEp8iFSu8DQbKGxALJblleYzUsV8sJiUXnKiWeK4yAZBxLX9Qdu57cfRT
+HCIowIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAGkRer1YH9LVJJKITyWzyDHM
Ra90sS8fyvtbuLK5UZ0+pA5BGHVai3DpCobjdXluwnRaVXBPypcFkZ2wuLj9T+o/
18j/49iDGNXU1wZaw3mEL56F/DjleNrowJ8UNrD/KQA+v93Lzb+yIo4C2GBQaj9F
sP3GZArI4YALBOB/lbZuY92M0PiKJnwB4MjQQDorXr65Qkwz+6eRUNdg2yT1q0fx
rtoc3Di5UW4DDklBAJzXG1KRrgNgSPlk7qq9Cr7g7eYpBVtIbvExxWr6oRds/Z5t
jRFgPEF4QuHbhnCi16hw1Guk22bQXjZpwMNGbQfNlOBx7T/u4U6ArSaynA6oI0c=
-----END CERTIFICATE REQUEST-----

Обратите внимание переносы на следующую строку присутствуют.

Как посмотреть содержание csr файла?

openssl req -in my_rsa.csr -text -noout -config root.config

опция -config почему-то требуется , чтобы присутствовала , но можно сослаться на любой файл - результат не изменится.

Вот примерно ,что мы должны увидеть:

OpenSSL> req -in leaf.csr -text -noout -config root.config
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: CN = BIT KKT driver, C = RU
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:b3:91:31:d2:2b:9f:ea:fa:ab:de:20:40:64:ee:
                    33:d0:ec:9f:f8:40:e2:27:2e:fc:d4:82:67:7f:d9:
                    ce:5f:d7:7b:11:ef:66:93:9a:bc:9d:c2:5e:a3:42:
                    a1:4a:a2:54:11:ed:e4:bb:c1:e5:51:fc:22:9e:80:
                    c9:ba:49:21:2b:cf:03:4f:b6:4a:67:be:72:0e:fb:
                    1b:99:07:99:5c:de:e6:1b:60:1c:d3:34:d9:02:96:
                    98:ed:27:da:ea:4e:ff:b2:5f:5e:b7:47:b0:70:8e:
                    7a:15:2f:eb:a6:25:f2:af:e3:1f:8d:5b:f0:21:c2:
                    79:a9:cb:4b:ec:d4:2d:77:19:15:79:43:c8:29:8e:
                    c6:5e:a0:e5:ad:9d:75:d7:e3:39:10:f0:88:42:1d:
                    0d:e2:22:c7:0c:60:a2:30:e7:95:9a:ac:2d:c5:f8:
                    83:e5:03:d3:0c:76:de:b1:e4:4e:32:24:47:07:4d:
                    fa:05:b0:fc:9a:c1:8b:1b:75:81:82:79:44:51:ad:
                    9c:34:50:c5:3c:57:fd:c9:4a:5e:bb:72:b6:21:b1:
                    64:12:9f:22:15:2b:bc:0d:06:ca:1b:10:0b:25:b9:
                    65:79:8c:d4:b1:5f:2c:26:25:17:9c:a8:96:78:ae:
                    32:01:90:71:2d:7f:50:76:ee:7b:71:f4:53:f8:70:
                    88:a3
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         69:11:7a:bd:58:1f:d2:d5:24:92:88:4f:25:b3:c8:31:cc:45:
         af:74:b1:2f:1f:ca:fb:5b:b8:b2:b9:51:9d:3e:a4:0e:41:18:
         75:5a:8b:70:e9:0a:86:e3:75:79:6e:c2:74:5a:55:70:4f:ca:
         97:05:91:9d:b0:b8:b8:fd:4f:ea:3f:d7:c8:ff:e3:d8:83:18:
         d5:d4:d7:06:5a:c3:79:84:2f:9e:85:fc:38:e5:78:da:e8:c0:
         9f:14:36:b0:ff:29:00:3e:bf:dd:cb:cd:bf:b2:22:8e:02:d8:
         60:50:6a:3f:45:b0:fd:c6:64:0a:c8:e1:80:0b:04:e0:7f:95:
         b6:6e:63:dd:8c:d0:f8:8a:26:7c:01:e0:c8:d0:40:3a:2b:5e:
         be:b9:42:4c:33:fb:a7:91:50:d7:60:db:24:f5:ab:47:f1:ae:
         da:1c:dc:38:b9:51:6e:03:0e:49:41:00:9c:d7:1b:52:91:ae:
         03:60:48:f9:64:ee:aa:bd:0a:be:e0:ed:e6:29:05:5b:48:6e:
         f1:31:c5:6a:fa:a1:17:6c:fd:9e:6d:8d:11:60:3c:41:78:42:
         e1:db:86:70:a2:d7:a8:70:d4:6b:a4:db:66:d0:5e:36:69:c0:
         c3:46:6d:07:cd:94:e0:71:ed:3f:ee:e1:4e:80:ad:26:b2:9c:
         0e:a8:23:47

В теле запроса передается данные - это CN , C и др. Это данные сертификата 2.
Далее передается открытая часть ключа (сертификата 2) RSA Public-Key: (2048 bit).
И еще передается подпись. То есть это подпись запроса (он же зашифрованный ХЭШ), ХЭШ полученный по содержанию сертификата 2 (данные - CN , C,..) и зашифрованный закрытой частью ключа сертификата 2 (Signature Algorithm: sha256WithRSAEncryption).

В каком же формате представлены данные csr файла , закодированные алгоритмом base64. Это формат ASN.1 и его можно декодировать онлайн в браузере. Получим такой результат:

SEQUENCE (3 elem)
  SEQUENCE (4 elem)
    INTEGER 0
    SEQUENCE (2 elem)
      SET (1 elem)
        SEQUENCE (2 elem)
          OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component)
          UTF8String BIT KKT driver
      SET (1 elem)
        SEQUENCE (2 elem)
          OBJECT IDENTIFIER 2.5.4.6 countryName (X.520 DN component)
          PrintableString RU
    SEQUENCE (2 elem)
      SEQUENCE (2 elem)
        OBJECT IDENTIFIER 1.2.840.113549.1.1.1 rsaEncryption (PKCS #1)
        NULL
      BIT STRING (2160 bit) 001100001000001000000001000010100000001010000010000000010000000100000…
        SEQUENCE (2 elem)
          INTEGER (2048 bit) 226682547211903432629199917499734612767230359906424025263377728713626…
          INTEGER 65537
    [0] (0 elem)
  SEQUENCE (2 elem)
    OBJECT IDENTIFIER 1.2.840.113549.1.1.11 sha256WithRSAEncryption (PKCS #1)
    NULL
  BIT STRING (2048 bit) 011010010001000101111010101111010101100000011111110100101101010100100…

Можно увидеть ,что действительно это похоже на результат выполнения
req -in leaf.csr -text -noout -config root.config.

Более того здесь представлена информация об OID (OBJECT IDENTIFIER) каждого поля.

OBJECT IDENTIFIER 1.2.840.113549.1.1.1 — характеризует алгоритм ключа, в данном случае rsaEncryption
OBJECT IDENTIFIER 1.2.840.113549.1.1.11 - sha256WithRSAEncryption

Примечание: может показаться , что последовательно CN,C или C,CN в файле root.config не имеет значения?... Но это не так - последовательность параметров , указываемых в config файле имеет значение . При другой последовательности получается другой base64.