Flow część 1

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:

  1. Signature format: CAdES/ETSI
  2. Signature type: Internal signature
  3. Digest function: SHA-256
  4. 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.