W najbliższych kilku postach postaram się zaprezentować flow.
Do prezentacji będę korzystał z głównie z narzędzi linii poleceń.
Początkowo zamierzałem wykorzystać polecenie cms z pakietu OpenSSL do podpisywania plików,
jednakże wersja stabilna nie tworzy dokumentów zgodnych z CAdES, a wersja rozwojowa, która
ma tryb zgodności z CAdES nie współpracuje jeszcze z engine_pkcs11 co uniemożliwia skorzystanie
z podpisu na karcie kryptograficznej.
Przygotowania proCertum SmartSign Niektóre żądania do API wymagają podpisania treści żądania podpisem kwalifikowanym.
W tym celu wykorzystam oprogramowanie proCertum SmartSign.
Składany podpis musi być w formacie CAdES/ETSI, podpis musi otaczć dokument, znakowanie czasem nie jest wymagane.
W proCertum SmartSign taką konfigurację uzyskałem wybierając opcje:
Signature format: CAdES/ETSI
Signature type: Internal signature
Digest function: SHA-256
Additional signature options:
Signature profile: “Do not include any additional information (BES)”.
cURL Używam curl w domyślej wersji zainstalowanej w Ubuntu 18.04 LTS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ksm@ksm:~/flow/rejestracja$ curl --version curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.0g zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3 Release-Date: 2018-01-24 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL ``` # Rejestracja instytucji obowiązanej Przygotowałem plik `rejestracja.xml` z danymi instytucji: ```xml <?xml version="1.0" encoding="UTF-8"?> <Dokument xmlns="http://crd.gov.pl/wzor/2018/10/19/5991/"> <OpisDokumentu/> <DaneDokumentu/> <TrescDokumentu rodzaj="inny" format="text/xml" kodowanie="XML"> <Karta aktualizacja="false"> <Nazwa>Instytucja Przykładowa</Nazwa> <FormaOrganizacyjna>17</FormaOrganizacyjna> <NIP>0123456789</NIP> <Adres> <Kraj>PL</Kraj> <Miejscowosc>Warszawa</Miejscowosc> <Kod>00-916</Kod> <Gmina>04241</Gmina> <Ulica>Świętokrzyska</Ulica> <NumerDomu>12</NumerDomu> </Adres> <OsobaOdpowiedzialna> <ImiePierwsze>Tester</ImiePierwsze> <Nazwisko>Testowy</Nazwisko> <Stanowisko>tester</Stanowisko> <Telefon>226945555</Telefon> <Email>tester@example.com</Email> </OsobaOdpowiedzialna> <RodzajInstytucji>451</RodzajInstytucji> </Karta> </TrescDokumentu> </Dokument>
Plik ten podpisałem, otrzymując plik binarny rejestracja.xml.sig. Hexdump tego pliku zaczyna się następująco:
1 2 3 4 5 6 7 8 9 10 ksm@ksm-7530:~/tmp/flow/rejestracja$ hd rejestracja.xml.sig 00000000 30 80 06 09 2a 86 48 86 f7 0d 01 07 02 a0 80 30 |0...*.H........0| 00000010 80 02 01 01 31 0f 30 0d 06 09 60 86 48 01 65 03 |....1.0...`.H.e.| 00000020 04 02 01 05 00 30 80 06 09 2a 86 48 86 f7 0d 01 |.....0...*.H....| 00000030 07 01 a0 80 24 80 04 82 03 a5 3c 3f 78 6d 6c 20 |....$.....<?xml | 00000040 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e |version="1.0" en| 00000050 63 6f 64 69 6e 67 3d 22 55 54 46 2d 38 22 3f 3e |coding="UTF-8"?>| 00000060 0a 3c 44 6f 6b 75 6d 65 6e 74 20 78 6d 6c 6e 73 |.<Dokument xmlns| 00000070 3d 22 68 74 74 70 3a 2f 2f 63 72 64 2e 67 6f 76 |="http://crd.gov| 00000080 2e 70 6c 2f 77 7a 6f 72 2f 32 30 31 38 2f 31 30 |.pl/wzor/2018/10|
A tak wygląda struktura podpisanego pliku:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 ksm@ksm-7530:~/tmp/flow/rejestracja$ openssl cms -inform DER -cmsout -noout -print -in rejestracja.xml.sig CMS_ContentInfo: contentType: pkcs7-signedData (1.2.840.113549.1.7.2) d.signedData: version: 1 digestAlgorithms: algorithm: sha256 (2.16.840.1.101.3.4.2.1) parameter: NULL encapContentInfo: eContentType: pkcs7-data (1.2.840.113549.1.7.1) eContent: 0000 - 3c 3f 78 6d 6c 20 76 65-72 73 69 6f 6e 3d 22 <?xml version=" 000f - 31 2e 30 22 20 65 6e 63-6f 64 69 6e 67 3d 22 1.0" encoding=" 001e - 55 54 46 2d 38 22 3f 3e-0a 3c 44 6f 6b 75 6d UTF-8"?>.<Dokum 002d - 65 6e 74 20 78 6d 6c 6e-73 3d 22 68 74 74 70 ent xmlns="http 003c - 3a 2f 2f 63 72 64 2e 67-6f 76 2e 70 6c 2f 77 ://crd.gov.pl/w 004b - 7a 6f 72 2f 32 30 31 38-2f 31 30 2f 31 39 2f zor/2018/10/19/ 005a - 35 39 39 31 2f 22 3e 0a-20 20 3c 4f 70 69 73 5991/">. <Opis 0069 - 44 6f 6b 75 6d 65 6e 74-75 2f 3e 0a 20 20 3c Dokumentu/>. < 0078 - 44 61 6e 65 44 6f 6b 75-6d 65 6e 74 75 2f 3e DaneDokumentu/> 0087 - 0a 20 20 3c 54 72 65 73-63 44 6f 6b 75 6d 65 . <TrescDokume 0096 - 6e 74 75 20 72 6f 64 7a-61 6a 3d 22 69 6e 6e ntu rodzaj="inn 00a5 - 79 22 20 66 6f 72 6d 61-74 3d 22 74 65 78 74 y" format="text 00b4 - 2f 78 6d 6c 22 20 6b 6f-64 6f 77 61 6e 69 65 /xml" kodowanie 00c3 - 3d 22 58 4d 4c 22 3e 0a-20 20 20 20 3c 4b 61 ="XML">. <Ka 00d2 - 72 74 61 20 61 6b 74 75-61 6c 69 7a 61 63 6a rta aktualizacj 00e1 - 61 3d 22 66 61 6c 73 65-22 3e 0a 20 20 20 20 a="false">. 00f0 - 20 20 3c 4e 61 7a 77 61-3e 49 6e 73 74 79 74 <Nazwa>Instyt 00ff - 75 63 6a 61 20 50 72 7a-79 6b c5 82 61 64 6f ucja Przyk..ado 010e - 77 61 3c 2f 4e 61 7a 77-61 3e 0a 20 20 20 20 wa</Nazwa>. 011d - 20 20 3c 46 6f 72 6d 61-4f 72 67 61 6e 69 7a <FormaOrganiz 012c - 61 63 79 6a 6e 61 3e 31-37 3c 2f 46 6f 72 6d acyjna>17</Form 013b - 61 4f 72 67 61 6e 69 7a-61 63 79 6a 6e 61 3e aOrganizacyjna> 014a - 0a 20 20 20 20 20 20 3c-4e 49 50 3e 30 31 32 . <NIP>012 0159 - 33 34 35 36 37 38 39 3c-2f 4e 49 50 3e 0a 20 3456789</NIP>. 0168 - 20 20 20 20 20 3c 41 64-72 65 73 3e 0a 20 20 <Adres>. 0177 - 20 20 20 20 20 20 3c 4b-72 61 6a 3e 50 4c 3c <Kraj>PL< 0186 - 2f 4b 72 61 6a 3e 0a 20-20 20 20 20 20 20 20 /Kraj>. 0195 - 3c 4d 69 65 6a 73 63 6f-77 6f 73 63 3e 57 61 <Miejscowosc>Wa 01a4 - 72 73 7a 61 77 61 3c 2f-4d 69 65 6a 73 63 6f rszawa</Miejsco 01b3 - 77 6f 73 63 3e 0a 20 20-20 20 20 20 20 20 3c wosc>. < 01c2 - 4b 6f 64 3e 30 30 2d 39-31 36 3c 2f 4b 6f 64 Kod>00-916</Kod 01d1 - 3e 0a 20 20 20 20 20 20-20 20 3c 47 6d 69 6e >. <Gmin 01e0 - 61 3e 30 34 32 34 31 3c-2f 47 6d 69 6e 61 3e a>04241</Gmina> 01ef - 0a 20 20 20 20 20 20 20-20 3c 55 6c 69 63 61 . <Ulica 01fe - 3e c5 9a 77 69 c4 99 74-6f 6b 72 7a 79 73 6b >..wi..tokrzysk 020d - 61 3c 2f 55 6c 69 63 61-3e 0a 20 20 20 20 20 a</Ulica>. 021c - 20 20 20 3c 4e 75 6d 65-72 44 6f 6d 75 3e 31 <NumerDomu>1 022b - 32 3c 2f 4e 75 6d 65 72-44 6f 6d 75 3e 0a 20 2</NumerDomu>. 023a - 20 20 20 20 20 3c 2f 41-64 72 65 73 3e 0a 20 </Adres>. 0249 - 20 20 20 20 20 3c 4f 73-6f 62 61 4f 64 70 6f <OsobaOdpo 0258 - 77 69 65 64 7a 69 61 6c-6e 61 3e 0a 20 20 20 wiedzialna>. 0267 - 20 20 20 20 20 3c 49 6d-69 65 50 69 65 72 77 <ImiePierw 0276 - 73 7a 65 3e 54 65 73 74-65 72 3c 2f 49 6d 69 sze>Tester</Imi 0285 - 65 50 69 65 72 77 73 7a-65 3e 0a 20 20 20 20 ePierwsze>. 0294 - 20 20 20 20 3c 4e 61 7a-77 69 73 6b 6f 3e 54 <Nazwisko>T 02a3 - 65 73 74 6f 77 79 3c 2f-4e 61 7a 77 69 73 6b estowy</Nazwisk 02b2 - 6f 3e 0a 20 20 20 20 20-20 20 20 3c 53 74 61 o>. <Sta 02c1 - 6e 6f 77 69 73 6b 6f 3e-74 65 73 74 65 72 3c nowisko>tester< 02d0 - 2f 53 74 61 6e 6f 77 69-73 6b 6f 3e 0a 20 20 /Stanowisko>. 02df - 20 20 20 20 20 20 3c 54-65 6c 65 66 6f 6e 3e <Telefon> 02ee - 32 32 36 39 34 35 35 35-35 3c 2f 54 65 6c 65 226945555</Tele 02fd - 66 6f 6e 3e 0a 20 20 20-20 20 20 20 20 3c 45 fon>. <E 030c - 6d 61 69 6c 3e 74 65 73-74 65 72 40 65 78 61 mail>tester@exa 031b - 6d 70 6c 65 2e 63 6f 6d-3c 2f 45 6d 61 69 6c mple.com</Email 032a - 3e 0a 20 20 20 20 20 20-3c 2f 4f 73 6f 62 61 >. </Osoba 0339 - 4f 64 70 6f 77 69 65 64-7a 69 61 6c 6e 61 3e Odpowiedzialna> 0348 - 0a 20 20 20 20 20 20 3c-52 6f 64 7a 61 6a 49 . <RodzajI 0357 - 6e 73 74 79 74 75 63 6a-69 3e 34 35 31 3c 2f nstytucji>451</ 0366 - 52 6f 64 7a 61 6a 49 6e-73 74 79 74 75 63 6a RodzajInstytucj 0375 - 69 3e 0a 20 20 20 20 3c-2f 4b 61 72 74 61 3e i>. </Karta> 0384 - 0a 20 20 3c 2f 54 72 65-73 63 44 6f 6b 75 6d . </TrescDokum 0393 - 65 6e 74 75 3e 0a 3c 2f-44 6f 6b 75 6d 65 6e entu>.</Dokumen 03a2 - 74 3e 0a t>. certificates: d.certificate: cert_info: version: 2 serialNumber: 34381343500300685680795199330219258600 signature: algorithm: sha256WithRSAEncryption (1.2.840.113549.1.1.11) parameter: NULL issuer: C=PL, O=Asseco Data Systems S.A., CN=Certum QCA 2017/2.5.4.97=VATPL-5170359458 validity: notBefore: Aug 28 09:52:08 2018 GMT notAfter: Aug 27 09:52:08 2020 GMT subject: **Dane użytkownika podpisującego** key: algor: algorithm: rsaEncryption (1.2.840.113549.1.1.1) parameter: NULL public_key: (0 unused bits) 0000 - 30 82 01 0a 02 82 01 01-00 b6 71 b9 7d 89 0.........q.}. 000e - 52 e9 fc f2 f1 eb 08 49-8c af 7a 74 88 14 R......I..zt.. 001c - 73 56 8b e6 8a 43 ae 33-43 b3 37 85 f5 08 sV...C.3C.7... 002a - 94 35 d2 4e 5b 5a 48 ed-b6 c2 dc 81 7e c9 .5.N[ZH.....~. 0038 - 4c 1d 8a 06 3d ba 6c 55-50 23 af c8 1a 94 L...=.lUP#.... 0046 - 47 e8 c3 04 12 80 96 e7-d0 80 11 18 5d 25 G...........]% 0054 - ac a9 0f 12 75 54 43 d6-2a a5 04 6f 70 5d ....uTC.*..op] 0062 - 35 2a 54 10 2e 21 b8 f9-b9 71 94 68 bb c2 5*T..!...q.h.. 0070 - 67 47 61 5c 71 cd 4b 64-ff 03 e6 2c 7d 3b gGa\q.Kd...,}; 007e - 96 5b d8 a7 80 ee 29 78-98 37 64 a4 a7 8e .[....)x.7d... 008c - 01 1c ac 51 04 10 22 e4-c6 2d 7d 1d 53 42 ...Q.."..-}.SB 009a - 62 d6 9c ed 39 3e 33 4b-c8 bd c6 98 f9 54 b...9>3K.....T 00a8 - 76 ae 65 4b 96 48 8a da-15 27 49 a5 cc fd v.eK.H...'I... 00b6 - 85 27 27 6f 50 24 0e 5a-5c 12 ea 91 37 96 .''oP$.Z\...7. 00c4 - 70 0b fc 7e aa 14 2c 97-46 b7 46 2a 19 e1 p..~..,.F.F*.. 00d2 - d4 1d 57 f8 93 28 f5 de-37 ad ab c8 b3 79 ..W..(..7....y 00e0 - a8 e6 d7 39 66 94 43 aa-eb cc c1 f3 74 77 ...9f.C.....tw 00ee - 9c 55 9e 18 d7 1e 17 f0-0d 47 0e a1 67 f5 .U.......G..g. 00fc - 5b 74 35 25 a1 1e 2d 8e-5b ac 8e 9b b1 02 [t5%..-.[..... 010a - 03 01 00 01 .... issuerUID: <ABSENT> subjectUID: <ABSENT> extensions: object: X509v3 Basic Constraints (2.5.29.19) critical: TRUE value: 0000 - 30 0 0002 - <SPACES/NULS> object: X509v3 CRL Distribution Points (2.5.29.31) critical: BOOL ABSENT value: 0000 - 30 2d 30 2b a0 29 a0 27-86 25 68 74 74 0-0+.).'.%htt 000d - 70 3a 2f 2f 71 63 61 2e-63 72 6c 2e 63 p://qca.crl.c 001a - 65 72 74 75 6d 2e 70 6c-2f 71 63 61 5f ertum.pl/qca_ 0027 - 32 30 31 37 2e 63 72 6c- 2017.crl object: Authority Information Access (1.3.6.1.5.5.7.1.1) critical: BOOL ABSENT value: 0000 - 30 64 30 2c 06 08 2b 06-01 05 05 07 30 0d0,..+.....0 000d - 01 86 20 68 74 74 70 3a-2f 2f 71 63 61 .. http://qca 001a - 2d 32 30 31 37 2e 71 6f-63 73 70 2d 63 -2017.qocsp-c 0027 - 65 72 74 75 6d 2e 63 6f-6d 30 34 06 08 ertum.com04.. 0034 - 2b 06 01 05 05 07 30 02-86 28 68 74 74 +.....0..(htt 0041 - 70 3a 2f 2f 72 65 70 6f-73 69 74 6f 72 p://repositor 004e - 79 2e 63 65 72 74 75 6d-2e 70 6c 2f 71 y.certum.pl/q 005b - 63 61 5f 32 30 31 37 2e-63 65 72 ca_2017.cer object: X509v3 Authority Key Identifier (2.5.29.35) critical: BOOL ABSENT value: 0000 - 30 16 80 14 27 f1 d8 4e-60 50 68 b6 61 0...'..N`Ph.a 000d - fe 68 1b 28 6c 6d e4 0b-73 09 4d .h.(lm..s.M object: X509v3 Subject Key Identifier (2.5.29.14) critical: BOOL ABSENT value: 0000 - 04 14 63 c6 43 cd 2a 1a-bf 98 46 7e d1 ..c.C.*...F~. 000d - 45 a8 3f 60 4e 3d 0c 9d-4c E.?`N=..L object: X509v3 Key Usage (2.5.29.15) critical: TRUE value: 0000 - 03 02 06 c0 .... object: X509v3 Certificate Policies (2.5.29.32) critical: BOOL ABSENT value: 0000 - 30 82 01 6e 30 09 06 07-04 00 8b ec 40 0..n0.......@ 000d - 01 02 30 82 01 5f 06 0c-2a 84 68 01 86 ..0.._..*.h.. 001a - f6 77 02 04 01 0c 01 30-82 01 4d 30 2d .w.....0..M0- 0027 - 06 08 2b 06 01 05 05 07-02 01 16 21 68 ..+........!h 0034 - 74 74 70 3a 2f 2f 77 77-77 2e 63 65 72 ttp://www.cer 0041 - 74 75 6d 2e 70 6c 2f 72-65 70 6f 7a 79 tum.pl/repozy 004e - 74 6f 72 69 75 6d 30 82-01 1a 06 08 2b torium0.....+ 005b - 06 01 05 05 07 02 02 30-82 01 0c 30 1f .......0...0. 0068 - 16 18 41 73 73 65 63 6f-20 44 61 74 61 ..Asseco Data 0075 - 20 53 79 73 74 65 6d 73-20 53 2e 41 2e Systems S.A. 0082 - 30 03 02 01 01 0c 81 e8-43 65 72 74 75 0.......Certu 008f - 6d 20 51 75 61 6c 69 66-69 65 64 20 43 m Qualified C 009c - 65 72 74 69 66 69 63 61-74 65 20 50 6f ertificate Po 00a9 - 6c 69 63 79 20 66 6f 72-20 50 68 79 73 licy for Phys 00b6 - 69 63 61 6c 20 61 6e 64-20 4e 61 74 75 ical and Natu 00c3 - 72 61 6c 20 50 65 72 73-6f 6e 73 20 77 ral Persons w 00d0 - 69 74 68 20 53 65 63 75-72 65 20 53 69 ith Secure Si 00dd - 67 6e 61 74 75 72 65 20-43 72 65 61 74 gnature Creat 00ea - 69 6f 6e 20 44 65 76 69-63 65 20 28 53 ion Device (S 00f7 - 53 43 44 29 2e 20 4d 6f-72 65 20 64 65 SCD). More de 0104 - 74 61 69 6c 65 64 20 69-6e 66 6f 72 6d tailed inform 0111 - 61 74 69 6f 6e 20 63 61-6e 20 62 65 20 ation can be 011e - 66 6f 75 6e 64 20 69 6e-20 74 68 65 20 found in the 012b - 43 65 72 74 69 66 69 63-61 74 65 20 50 Certificate P 0138 - 6f 6c 69 63 79 20 31 2e-33 2e 36 2e 31 olicy 1.3.6.1 0145 - 2e 34 2e 31 2e 33 38 36-30 2e 31 2e 32 .4.1.3860.1.2 0152 - 2e 31 30 34 2e 31 2e 30-20 6f 6e 20 68 .104.1.0 on h 015f - 74 74 70 3a 2f 2f 77 77-77 2e 63 65 72 ttp://www.cer 016c - 74 75 6d 2e 65 75 tum.eu object: qcStatements (1.3.6.1.5.5.7.1.3) critical: BOOL ABSENT value: 0000 - 30 81 b2 30 08 06 06 04-00 8e 46 01 01 0..0......F.. 000d - 30 08 06 06 04 00 8e 46-01 04 30 81 86 0......F..0.. 001a - 06 06 04 00 8e 46 01 05-30 7c 30 3c 16 .....F..0|0<. 0027 - 36 68 74 74 70 73 3a 2f-2f 72 65 70 6f 6https://repo 0034 - 73 69 74 6f 72 79 2e 63-65 72 74 75 6d sitory.certum 0041 - 2e 70 6c 2f 50 44 53 2f-43 65 72 74 75 .pl/PDS/Certu 004e - 6d 5f 51 43 41 2d 50 44-53 5f 45 4e 2e m_QCA-PDS_EN. 005b - 70 64 66 13 02 65 6e 30-3c 16 36 68 74 pdf..en0<.6ht 0068 - 74 70 73 3a 2f 2f 72 65-70 6f 73 69 74 tps://reposit 0075 - 6f 72 79 2e 63 65 72 74-75 6d 2e 70 6c ory.certum.pl 0082 - 2f 50 44 53 2f 43 65 72-74 75 6d 5f 51 /PDS/Certum_Q 008f - 43 41 2d 50 44 53 5f 50-4c 2e 70 64 66 CA-PDS_PL.pdf 009c - 13 02 70 6c 30 13 06 06-04 00 8e 46 01 ..pl0......F. 00a9 - 06 30 09 06 07 04 00 8e-46 01 06 01 .0......F... sig_alg: algorithm: sha256WithRSAEncryption (1.2.840.113549.1.1.11) parameter: NULL signature: (0 unused bits) 0000 - a0 1f 4d 7a cb b6 43 4e-02 65 d1 cd 07 5b 17 ..Mz..CN.e...[. 000f - 70 b5 bf 4c 14 93 fd cf-26 38 3a 16 db 30 80 p..L....&8:..0. 001e - 2a bf 10 85 c0 2b 77 1c-1a 66 7e ce cb 45 e9 *....+w..f~..E. 002d - ab ba 54 da e8 a5 f3 95-ab 49 ed 7f c1 c3 5d ..T......I....] 003c - e2 32 b2 a6 20 f6 31 b3-f5 cc a4 d5 fb bf 71 .2.. .1.......q 004b - 37 fd 2a a2 af f4 3d 02-97 25 e1 53 a6 8a 2d 7.*...=..%.S..- 005a - ec dd 04 f1 6b d7 ce d7-85 6a 32 14 15 62 c4 ....k....j2..b. 0069 - d3 be c3 a4 cf e8 0c a8-96 78 34 33 66 bf e8 .........x43f.. 0078 - 6b 1a a9 b4 90 35 2a a4-94 f8 04 07 d1 bb a0 k....5*........ 0087 - 11 51 df 96 d5 43 3b 56-3f 3c 6b d3 53 2e dd .Q...C;V?<k.S.. 0096 - a3 05 8c 0a 47 de dc 04-55 8d 68 e6 ed a5 78 ....G...U.h...x 00a5 - 45 e3 78 83 26 b6 6e b8-09 e6 02 a1 10 fd 65 E.x.&.n.......e 00b4 - 91 39 79 2c 43 c2 cb e1-ae f8 c3 4b 72 1a 23 .9y,C......Kr.# 00c3 - a0 f3 67 c3 1d 46 57 05-3a ec cd fa ef d3 5f ..g..FW.:....._ 00d2 - b3 2d bb cc c1 49 75 c8-8e 75 06 46 30 82 dd .-...Iu..u.F0.. 00e1 - e8 5a a4 4c a3 51 3d 30-4b a0 f7 75 9b 86 b5 .Z.L.Q=0K..u... 00f0 - b5 65 25 e7 d2 21 f6 f8-3b d2 f8 4f fc 95 f0 .e%..!..;..O... 00ff - 17 4d fa 84 3b 3a 57 80-a0 b6 61 5b c2 b0 c1 .M..;:W...a[... 010e - 01 62 11 d7 c9 09 ff 02-d1 fc 53 df 98 4e f3 .b........S..N. 011d - a1 97 b7 39 28 6f ab aa-ee ad 73 5f 1e 7b df ...9(o....s_.{. 012c - 12 27 17 47 00 50 9e 69-31 83 76 a2 7b d9 25 .'.G.P.i1.v.{.% 013b - 0b 0b 5d b8 de 9e 36 46-f7 84 1f 53 36 57 f5 ..]...6F...S6W. 014a - 3f fe 20 55 9e 58 63 5f-bf 26 de d0 a6 22 30 ?. U.Xc_.&..."0 0159 - bc 6c fd 13 15 c8 47 d9-7c 6d ec cf 1a 08 e5 .l....G.|m..... 0168 - 88 45 0f ff b9 8d bb df-a8 5b f2 89 b1 f0 57 .E.......[....W 0177 - ad 39 3e 3e d0 4e c4 48-19 6f 08 ef 1c b1 18 .9>>.N.H.o..... 0186 - 22 9b e4 8d 3b d2 9a 7a-3c 84 ae 24 d9 da 91 "...;..z<..$... 0195 - c1 85 36 7c 50 69 45 0c-17 5c 24 a7 04 6e 54 ..6|PiE..\$..nT 01a4 - 7b bc 55 86 7e 7f 31 63-78 d8 53 fd e2 d6 c6 {.U.~.1cx.S.... 01b3 - f6 69 73 de da a6 34 de-50 68 8d 43 12 76 b5 .is...4.Ph.C.v. 01c2 - 4a 1f 03 fb 0f d6 48 f9-ba 0b ac 93 48 ec 5b J.....H.....H.[ 01d1 - 84 f3 c2 7a d0 36 19 a0-a2 3b 28 76 86 48 4f ...z.6...;(v.HO 01e0 - 03 33 98 78 a5 49 cd cd-a9 57 60 11 6d 6a 15 .3.x.I...W`.mj. 01ef - 3b 13 51 cb d4 8a bb 3d-ff 34 cd d6 a3 67 54 ;.Q....=.4...gT 01fe - d0 32 .2 crls: <EMPTY> signerInfos: version: 1 d.issuerAndSerialNumber: issuer: C=PL, O=Asseco Data Systems S.A., CN=Certum QCA 2017/2.5.4.97=VATPL-5170359458 serialNumber: 34381343500300685680795199330219258600 digestAlgorithm: algorithm: sha256 (2.16.840.1.101.3.4.2.1) parameter: NULL signedAttrs: object: id-smime-aa-ets-sigPolicyId (1.2.840.113549.1.9.16.2.15) value.set: NULL object: contentType (1.2.840.113549.1.9.3) value.set: OBJECT:pkcs7-data (1.2.840.113549.1.7.1) object: signingTime (1.2.840.113549.1.9.5) value.set: UTCTIME:Apr 4 10:03:46 2019 GMT object: messageDigest (1.2.840.113549.1.9.4) value.set: OCTET STRING: 0000 - dd bb 85 f5 a4 68 6b 19-cd 28 2e c5 7d .....hk..(..} 000d - 79 6c b2 0c 6a fb f8 1c-96 92 e2 fb 4f yl..j.......O 001a - fc 2f 62 e7 f9 cf ./b... object: id-smime-aa-contentHint (1.2.840.113549.1.9.16.2.4) value.set: SEQUENCE: 0:d=0 hl=3 l= 138 cons: SEQUENCE 3:d=1 hl=2 l= 122 prim: UTF8STRING :MIME-Version: 1.0 Content-Type: text/xml Content-Transfer-Encoding: binary Content-Disposition: filename="rejestracja.xml" 127:d=1 hl=2 l= 12 prim: OBJECT :1.2.616.1.113527.3.1.1.3.1 object: id-smime-aa-signingCertificate (1.2.840.113549.1.9.16.2.12) value.set: SEQUENCE: 0:d=0 hl=3 l= 155 cons: SEQUENCE 3:d=1 hl=3 l= 152 cons: SEQUENCE 6:d=2 hl=3 l= 149 cons: SEQUENCE 9:d=3 hl=2 l= 20 prim: OCTET STRING [HEX DUMP]:FF270BC792ACD96F44BB5AADF9EF14811E87C5BB 31:d=3 hl=2 l= 125 cons: SEQUENCE 33:d=4 hl=2 l= 105 cons: SEQUENCE 35:d=5 hl=2 l= 103 cons: cont [ 4 ] 37:d=6 hl=2 l= 101 cons: SEQUENCE 39:d=7 hl=2 l= 11 cons: SET 41:d=8 hl=2 l= 9 cons: SEQUENCE 43:d=9 hl=2 l= 3 prim: OBJECT :countryName 48:d=9 hl=2 l= 2 prim: PRINTABLESTRING :PL 52:d=7 hl=2 l= 33 cons: SET 54:d=8 hl=2 l= 31 cons: SEQUENCE 56:d=9 hl=2 l= 3 prim: OBJECT :organizationName 61:d=9 hl=2 l= 24 prim: UTF8STRING :Asseco Data Systems S.A. 87:d=7 hl=2 l= 24 cons: SET 89:d=8 hl=2 l= 22 cons: SEQUENCE 91:d=9 hl=2 l= 3 prim: OBJECT :commonName 96:d=9 hl=2 l= 15 prim: UTF8STRING :Certum QCA 2017 113:d=7 hl=2 l= 25 cons: SET 115:d=8 hl=2 l= 23 cons: SEQUENCE 117:d=9 hl=2 l= 3 prim: OBJECT :2.5.4.97 122:d=9 hl=2 l= 16 prim: UTF8STRING :VATPL-5170359458 140:d=4 hl=2 l= 16 prim: INTEGER :19DD9B1C1A0EC71F3CA16588C318F2E8 signatureAlgorithm: algorithm: rsaEncryption (1.2.840.113549.1.1.1) parameter: NULL signature: 0000 - 89 ab df 36 aa e9 3c 1d-fc b7 9b e8 92 ee 4e ...6..<.......N 000f - ed 4e ee 97 f9 99 7c 4c-bd 86 63 0a 6e e7 62 .N....|L..c.n.b 001e - 20 1c 7e 23 5b e4 cb a3-29 ae 8d 43 50 fd 4e .~#[...)..CP.N 002d - c9 1b 28 97 e2 dd 0a 6b-05 ea 15 19 cd 8d 8e ..(....k....... 003c - 94 d6 52 15 7d 4f a2 6f-6d c6 33 f7 20 be b3 ..R.}O.om.3. .. 004b - cd 89 d2 07 b4 94 c2 07-41 7e 2b 4d 5e ad 94 ........A~+M^.. 005a - 52 3f 06 2c ac 20 55 7e-8b 87 10 00 88 f7 fa R?.,. U~....... 0069 - ea 46 a0 76 de 0f 72 ab-2e 52 63 da d0 a7 7c .F.v..r..Rc...| 0078 - a4 56 35 07 c8 c3 79 11-24 69 4b 15 a7 fa 4a .V5...y.$iK...J 0087 - cd 5d f3 3a 45 40 77 35-e0 ca 6a 43 6a 9b b2 .].:E@w5..jCj.. 0096 - 8e a9 d8 e8 12 59 54 84-7e 37 73 d1 4f 07 3f .....YT.~7s.O.? 00a5 - 36 5b 41 0d 0d 0a a0 f2-c1 d2 a6 97 f1 f3 3c 6[A...........< 00b4 - 66 6e 2d 73 ca d4 89 71-a4 26 53 1c 53 2f 1d fn-s...q.&S.S/. 00c3 - 0c 39 d0 2b e6 3e f0 7c-1c d7 61 ff 3d a7 d6 .9.+.>.|..a.=.. 00d2 - 88 7b da 2c 73 6b ba e2-9f af a8 14 ea f5 1e .{.,sk......... 00e1 - 31 bf a3 54 56 6a 1a a5-ea 1b 90 ca b5 96 29 1..TVj........) 00f0 - 71 75 19 e0 a7 4b a0 bd-65 83 58 36 c4 4d a6 qu...K..e.X6.M. 00ff - bd . unsignedAttrs: <EMPTY>
Tak przygotowany plik wysyłam ma stronę.
1 2 3 4 curl --data-binary @rejestracja.xml.sig \ --header 'Content-Type: application/xml' \ https://test.giif.mofnet.gov.pl/api/rest2018/instytucje/ Przyjęto zgłoszenie Instytucji Obowiązanej bez CSRa.
W systemie produkcyjnym oznaczałoby to, że zgłoszenie instytucji zostało zarejestrowane
i oczekuje na zatwierdzenie przez pracownika Ministerstwa Finansów.
W systemie testowym rejestracja jest automatyczna.
Utworzenie certyfikatu komunikacyjnego Generowanie CSRa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 openssl req -out ksm-kmk.csr -new -newkey rsa:2048 -nodes -keyout ksm-kmk.prv.pem Generating a 2048 bit RSA private key ................................................................+++ ............+++ unable to write 'random state' writing new private key to 'ksm-kmk.prv.pem' ----- 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]:. State or Province Name (full name) [Some-State]:. Locality Name (eg, city) []:. Organization Name (eg, company) [Internet Widgits Pty Ltd]:. Organizational Unit Name (eg, section) []:. Common Name (e.g. server FQDN or YOUR name) []:ksm-kmk Email Address []:. Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Wygenerowany CSR:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cat ksm-kmk.csr -----BEGIN CERTIFICATE REQUEST----- MIICVzCCAT8CAQAwEjEQMA4GA1UEAwwHa3NtLWttazCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAK48BF8GjdKp/9c9ujVl5xBPcsm/c9sfp9U/MqL2hekF wG6v9UXw8S8GRCG1rFbIKlKgPxQQWBcxzpJ9eWJ512J+kLTBLWYI2DAvLZiCnVFn NH8Fptl1C7KddVSHeCDFmsjaBeNNCFhRxdeYTUj9dAju3R+NQOQQ5biyBzLSunoh V/XGka66FV3SLy8HY6aTFYjUFCoCHFOB/gP9l8w9fAcD0DbCVnuSLe6RTIIVgWiV CoJ3t6Xt43Q5oxXbn5bbsm9OqX8vC/cEw5JgAJEzr5JeSLVzm1x/22ukR7QXIDD6 gCSAs3HUH8be5zpddUV7DsZ0WTRllKFbaj/224uSKHUCAwEAAaAAMA0GCSqGSIb3 DQEBCwUAA4IBAQA6P7LMhEqXaSwUclwNHC+x/BjgBlvk92WBkM1p3/j8psvK0qXc C7hArAh83xCeIBiYbUhqJcY++GV+83N5dnHSVllST6yo/LASGu2cmZwvD7TTzfp8 9R7LmUbpb+7wEdwzqxN3wEEjZrmmVUfZf7fwLm8JaWHWx9I1B2DtN5/HJkU7ne4y GijcaNdeu3ccCsq/WAl8qUFD4mIMTU0oKl3p2PZO/YCl2BKsx7Tk1YzfYkjKRinu FKLUTgRKbU4C7CF1FMxUWnbebuO9LBgb7Ra8AVutBkoI909DnGY03pcvdfAGNhLj oAPOL6HEKHlVTPq0EpSDQXqTr/X9qTaJJvYP -----END CERTIFICATE REQUEST-----
Wyliczam SHA256 dla CSRa zakodowanego w DER.
1 2 3 openssl req -in ksm-kmk.csr -outform DER -out ksm-kmk.csr.der sha256sum ksm-kmk.csr.der 51f2341e6d3f0b42db05fb5adba8e3f19d33279fe994602ae7323f4a918998c7 ksm-kmk.csr.der
Skrót będzie mi potrzebny do pobrania certyfikatu.
Plik XML Tworzę plik rejestracja_certyfikatu.xml z CSRem.
1 2 3 4 <?xml version="1.0" encoding="UTF-8" ?> <rejestracjaCertyfikatu xmlns ="http://www.giif.mofnet.gov.pl/xsd/rest/certyfikaty20171017" > <csr > MIICVzCCAT8CAQAwEjEQMA4GA1UEAwwHa3NtLWttazCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK48BF8GjdKp/9c9ujVl5xBPcsm/c9sfp9U/MqL2hekFwG6v9UXw8S8GRCG1rFbIKlKgPxQQWBcxzpJ9eWJ512J+kLTBLWYI2DAvLZiCnVFnNH8Fptl1C7KddVSHeCDFmsjaBeNNCFhRxdeYTUj9dAju3R+NQOQQ5biyBzLSunohV/XGka66FV3SLy8HY6aTFYjUFCoCHFOB/gP9l8w9fAcD0DbCVnuSLe6RTIIVgWiVCoJ3t6Xt43Q5oxXbn5bbsm9OqX8vC/cEw5JgAJEzr5JeSLVzm1x/22ukR7QXIDD6gCSAs3HUH8be5zpddUV7DsZ0WTRllKFbaj/224uSKHUCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQA6P7LMhEqXaSwUclwNHC+x/BjgBlvk92WBkM1p3/j8psvK0qXcC7hArAh83xCeIBiYbUhqJcY++GV+83N5dnHSVllST6yo/LASGu2cmZwvD7TTzfp89R7LmUbpb+7wEdwzqxN3wEEjZrmmVUfZf7fwLm8JaWHWx9I1B2DtN5/HJkU7ne4yGijcaNdeu3ccCsq/WAl8qUFD4mIMTU0oKl3p2PZO/YCl2BKsx7Tk1YzfYkjKRinuFKLUTgRKbU4C7CF1FMxUWnbebuO9LBgb7Ra8AVutBkoI909DnGY03pcvdfAGNhLjoAPOL6HEKHlVTPq0EpSDQXqTr/X9qTaJJvYP</csr > </rejestracjaCertyfikatu >
Następnie podpisuję ten plik i uzyskuję rejestracja_certyfikatu.xml.sig.
Wysłanie CSRa 1 2 3 curl --data-binary @rejestracja_certyfikatu.xml.sig --header 'Content-Type: application/xml' https://test.giif.mofnet.gov.pl/api/rest2018/instytucje/0123456789/certyfikaty/
Należy zwrócić uwagę na NIP 0123456789 w żądaniu, to ten sam NIP, którego użyłem w XMLu rejestracji.
Pobranie certyfikatu komunikacyjnego Pobieram certyfikat komunikacyjny, długi ciąg hexadecymalny na końcu żądania,
to skrót SHA256 z CSRa zakodowanego w DER.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 curl --header 'Accept: application/x-pem-file' \ https://test.giif.mofnet.gov.pl/api/rest2018/certyfikatyKomunikacyjne/51f2341e6d3f0b42db05fb5adba8e3f19d33279fe994602ae7323f4a918998c7 \ | tee ksm-kmk.pem -----BEGIN CERTIFICATE----- MIIEkzCCA3ugAwIBAgIVAIL9PdgT+FUQoAN4QYXHIjOyJDz6MA0GCSqGSIb3DQEB CwUAMIGMMQswCQYDVQQGEwJQTDEfMB0GA1UECgwWTWluaXN0ZXJzdHdvIEZpbmFu c8OzdzEyMDAGA1UECxMpR2VuZXJhbG55IEluc3Bla3RvciBJbmZvcm1hY2ppIEZp bmFuc293ZWoxKDAmBgNVBAMTH0dJSUYgVEVTVCBDQSBLb211bmlrYWN5am5lIDIw MTkwHhcNMTkwNDA1MTAwMTAyWhcNMjAwODI3MDk1MjA4WjA8MRAwDgYDVQQDDAdr c20ta21rMRIwEAYDVQQqDAlLcnp5c3p0b2YxFDASBgNVBAQMC8WabWlncm9kemtp MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArjwEXwaN0qn/1z26NWXn EE9yyb9z2x+n1T8yovaF6QXAbq/1RfDxLwZEIbWsVsgqUqA/FBBYFzHOkn15YnnX Yn6QtMEtZgjYMC8tmIKdUWc0fwWm2XULsp11VId4IMWayNoF400IWFHF15hNSP10 CO7dH41A5BDluLIHMtK6eiFX9caRrroVXdIvLwdjppMViNQUKgIcU4H+A/2XzD18 BwPQNsJWe5It7pFMghWBaJUKgne3pe3jdDmjFdufltuyb06pfy8L9wTDkmAAkTOv kl5ItXObXH/ba6RHtBcgMPqAJICzcdQfxt7nOl11RXsOxnRZNGWUoVtqP/bbi5Io dQIDAQABo4IBOTCCATUwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcD AjCB4wYDVR0jBIHbMIHYgBT6g+iddLp+XmlZvyHFSXntzeUN06GBraSBqjCBpzEL MAkGA1UEBhMCUEwxFDASBgNVBAgTC21hem93aWVja2llMREwDwYDVQQHEwhXYXJz emF3YTEfMB0GA1UECgwWTWluaXN0ZXJzdHdvIEZpbmFuc8OzdzEyMDAGA1UECxMp R2VuZXJhbG55IEluc3Bla3RvciBJbmZvcm1hY2ppIEZpbmFuc293ZWoxGjAYBgNV BAMTEUdJSUYgVEVTVCBDQSAyMDE5ghBJV6ZSFxWMyESOVADlcKVLMB0GA1UdDgQW BBQeRchIEyilOnTETgLUCkP5wb3rFjALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEL BQADggEBAKv/jitjMZKMhp7nYl2hwjArbWkgRaR3ly+5fA6Mc/1jf3Tj3nLfaX1V W+UGI6m6l5VluulJmEezuptnnffQVpWKu98BDq/DJRA2YcWeW+JIzZSYKZHP9EdB YNibFozq74DydLs9/L184/Zt+fPAyFQMz8T02Y50PcyQuafLq81rcUJ4RlmxwYnu lGKw93ObQZsdCklb1WfqUmtM7IfJKEOS8w7DGlHPQkR0sTxSR1gKFHyzE7U/VIZK lfjrc/e1uMLYV1gV0nkWE7VSsMTc5S8k+JGSZfSKVXMMZVwVkZQGuFnwnQvGcEzj ZQ5VXPITb8VZRe8Ak67812H/nCFQw5g= -----END CERTIFICATE-----
Certyfikat zapisałem do pliku ksm-kmk.pem.