Projekt

Obecné

Profil

Stáhnout (24 KB) Statistiky
| Větev: | Tag: | Revize:
1
<!DOCTYPE html>
2
<html lang="en">
3
<head>
4
    <meta charset="UTF-8">
5
    <title>X.509 Certificate Management</title>
6
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
7
    <link href="https://cdn.jsdelivr.net/npm/vue-loading-overlay@3/dist/vue-loading.css" rel="stylesheet">
8
    <link rel="stylesheet" href="/static/css/app.css">
9
</head>
10
<body class="p-4">
11
    <div id="certificate-detailed-view-content" class="p-4">
12
        <div v-if="loading">
13
            <loading :active.sync="loading"
14
                     :can-cancel="false"
15
                      loader="dots"
16
                     :is-full-page="true"></loading>
17
        </div>
18
        <div id="404_page" v-if="!loading && error" align="center" v-cloak>
19
            <div class="fof">
20
                    <h1>Error 404</h1>
21
            </div>
22
            <a href="/" class="caret-left">Home</a>
23
        </div>
24
        <div v-if="!loading && !error" v-cloak class="card">
25
            <div class="card-body">
26
                <div class="row">
27
                    <a href="/static/index.html"><div class="caret-left font-weight-bold ml-2 mb-2">Home</div></a>
28
                </div>
29
                <h1 class="mb-5 text-center">Certificate Detailed View</h1>
30
                <div class="alert alert-success" v-if="successMessage !== ''" role="alert" v-cloak>
31
                    {{ successMessage }}
32
                </div>
33
                <div v-if="errorMessage !== ''" class="alert alert-danger" v-cloak role="alert">
34
                    {{ errorMessage }}
35
                </div>
36
                <div class="row">
37
                    <div class="col-xl-6">
38
                        <table class="ml-auto mr-auto mb-4">
39
                            <tr>
40
                                <td>Status:</td>
41
                                <td class="pl-3">
42
                                    <h5><span class="badge badge-success" v-if="certificate.status == 'valid'">Valid</span></h5>
43
                                    <h5><span class="badge badge-warning" v-if="certificate.status == 'revoked'">Revoked</span></h5>
44
                                    <h5><span class="badge badge-danger" v-if="certificate.status == 'expired'">Expired</span></h5>
45
                                </td>
46
                            </tr>
47
                            <tr>
48
                                <div class="form-group">
49
                                    <td><label for="validity_start">Validity start:</label></td>
50
                                    <td class="pl-3">
51
                                        <input :value="startDate" type="text" id="validity_start" name="validity_start" class="form-control" disabled>
52
                                    </td>
53
                                </div>
54
                            </tr>
55
                            <tr>
56
                                <div class="form-group">
57
                                    <td><label for="validity_end">Validity end:</label></td>
58
                                    <td class="pl-3">
59
                                        <input :value="endDate" type="text" id="validity_end" name="validity_end" class="form-control" disabled>
60
                                    </td>
61
                                </div>
62
                            </tr>
63
                            <tr>
64
                                <td colspan="2"><h5>Subject</h5></td>
65
                            </tr>
66
                            <tr>
67
                                <div class="form-group">
68
                                    <td><label for="subject_C">Country Code:</label></td>
69
                                    <td class="pl-3">
70
                                        <input :value="certificate.subject.C" type="text" id="subject_C" name="subject_C" class="form-control" disabled>
71
                                    </td>
72
                                </div>
73
                            </tr>
74
                            <tr>
75
                                <div class="form-group">
76
                                    <td><label for="subject_ST">Province/State:</label></td>
77
                                    <td class="pl-3">
78
                                        <input :value="certificate.subject.ST" type="text" id="subject_ST" name="subject_ST" class="form-control" disabled>
79
                                    </td>
80
                                </div>
81
                            </tr>
82
                            <tr>
83
                                <div class="form-group">
84
                                    <td><label for="subject_L">Locality:</label></td>
85
                                    <td class="pl-3">
86
                                        <input :value="certificate.subject.L" type="text" id="subject_L" name="subject_L" class="form-control" disabled>
87
                                    </td>
88
                                </div>
89
                            </tr>
90
                            <tr>
91
                                <div class="form-group">
92
                                    <td><label for="subject_CN">Common Name:</label></td>
93
                                    <td class="pl-3">
94
                                        <input :value="certificate.subject.CN" type="text" id="subject_CN" name="subject_CN" class="form-control" disabled>
95
                                    </td>
96
                                </div>
97
                            </tr>
98
                            <tr>
99
                                <div class="form-group">
100
                                    <td><label for="subject_O">Organization:</label></td>
101
                                    <td class="pl-3">
102
                                        <input :value="certificate.subject.O" type="text" id="subject_O" name="subject_O" class="form-control" disabled>
103
                                    </td>
104
                                </div>
105
                            </tr>
106
                            <tr>
107
                                <div class="form-group">
108
                                    <td><label for="subject_OU">Organization Unit:</label></td>
109
                                    <td class="pl-3">
110
                                        <input :value="certificate.subject.OU" type="text" id="subject_OU" name="subject_OU" class="form-control" disabled>
111
                                    </td>
112
                                </div>
113
                            </tr>
114
                            <tr>
115
                                <div class="form-group">
116
                                    <td><label for="subject_emailAddress">Email Address:</label></td>
117
                                    <td class="pl-3">
118
                                        <input :value="certificate.subject.emailAddress" type="text" id="subject_emailAddress" name="subject_emailAddress" class="form-control" disabled>
119
                                    </td>
120
                                </div>
121
                            </tr>
122
                            <tr>
123
                                <td>Usage:</td>
124
                                <td class="form-check">
125
                                    <input class="form-check-input" v-model="certificate.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA" disabled>
126
                                    <label class="form-check-label" for="isCA">CA</label><br>
127

    
128
                                    <input class="form-check-input" v-model="certificate.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature" disabled>
129
                                    <label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
130

    
131
                                    <input class="form-check-input" v-model="certificate.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication" disabled>
132
                                    <label class="form-check-label" for="isAuthentication">Authentication</label><br>
133

    
134
                                    <input class="form-check-input" v-model="certificate.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS" disabled>
135
                                    <label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
136
                                </td>
137
                            </tr>
138
                            <tr>
139
                                <td colspan="2" v-if="certificate.CA != id">
140
                                    <button v-on:click="onShowIssuer()" class="btn btn-outline-secondary btn-block mt-5" type="button">
141
                                        <span v-if="!displayIssuer">Show issuer</span>
142
                                        <span v-if="displayIssuer">Hide issuer</span>
143
                                    </button>
144
                                </td>
145
                            </tr>
146
                            <div id="issuerCollapse">
147
                                <tr v-if="displayIssuer">
148
                                    <td colspan="2"><h5 class="mt-2"><a :href="issuerURL">Issuer</a></h5></td>
149
                                </tr>
150
                                <tr v-if="displayIssuer" >
151
                                    <div class="form-group">
152
                                        <td><label for="subject_C">Country Code:</label></td>
153
                                        <td class="pl-3">
154
                                            <input :value="issuer.subject.C" type="text" id="subject_C" name="subject_C" class="form-control" disabled>
155
                                        </td>
156
                                    </div>
157
                                </tr>
158
                                <tr v-if="displayIssuer" >
159
                                    <div class="form-group">
160
                                        <td><label for="subject_ST">Province/State:</label></td>
161
                                        <td class="pl-3">
162
                                            <input :value="issuer.subject.ST" type="text" id="subject_ST" name="subject_ST" class="form-control" disabled>
163
                                        </td>
164
                                    </div>
165
                                </tr>
166
                                <tr v-if="displayIssuer" >
167
                                    <div class="form-group">
168
                                        <td><label for="subject_L">Locality:</label></td>
169
                                        <td class="pl-3">
170
                                            <input :value="issuer.subject.L" type="text" id="subject_L" name="subject_L" class="form-control" disabled>
171
                                        </td>
172
                                    </div>
173
                                </tr>
174
                                <tr v-if="displayIssuer" >
175
                                    <div class="form-group">
176
                                        <td><label for="subject_CN">Common Name:</label></td>
177
                                        <td class="pl-3">
178
                                            <input :value="issuer.subject.CN" type="text" id="subject_CN" name="subject_CN" class="form-control" disabled>
179
                                        </td>
180
                                    </div>
181
                                </tr>
182
                                <tr v-if="displayIssuer" >
183
                                    <div class="form-group">
184
                                        <td><label for="subject_O">Organization:</label></td>
185
                                        <td class="pl-3">
186
                                            <input :value="issuer.subject.O" type="text" id="subject_O" name="subject_O" class="form-control" disabled>
187
                                        </td>
188
                                    </div>
189
                                </tr>
190
                                <tr v-if="displayIssuer" >
191
                                    <div class="form-group">
192
                                        <td><label for="subject_OU">Organization Unit:</label></td>
193
                                        <td class="pl-3">
194
                                            <input :value="issuer.subject.OU" type="text" id="subject_OU" name="subject_OU" class="form-control" disabled>
195
                                        </td>
196
                                    </div>
197
                                </tr>
198
                                <tr v-if="displayIssuer" >
199
                                    <div class="form-group">
200
                                        <td><label for="subject_emailAddress">Email Address:</label></td>
201
                                        <td class="pl-3">
202
                                            <input :value="issuer.subject.emailAddress" type="text" id="subject_emailAddress" name="subject_emailAddress" class="form-control" disabled>
203
                                        </td>
204
                                    </div>
205
                                </tr>
206
                                <tr v-if="displayIssuer" >
207
                                    <td>Usage:</td>
208
                                    <td class="form-check">
209
                                        <input class="form-check-input" v-model="issuer.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA" disabled>
210
                                        <label class="form-check-label" for="isCA">CA</label><br>
211

    
212
                                        <input class="form-check-input" v-model="issuer.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature" disabled>
213
                                        <label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
214

    
215
                                        <input class="form-check-input" v-model="issuer.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication" disabled>
216
                                        <label class="form-check-label" for="isAuthentication">Authentication</label><br>
217

    
218
                                        <input class="form-check-input" v-model="issuer.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS" disabled>
219
                                        <label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
220
                                    </td>
221
                                </tr>
222
                            </div>
223
                        </table>
224
                    </div>
225
                    <div class="col-xl-5">
226
                        <div class="row table-responsive">
227
                            <table class="table">
228
                                <thead class="thead-dark">
229
                                    <tr>
230
                                        <th colspan="5" class="text-center">Manage certificate</th>
231
                                    </tr>
232
                                </thead>
233
                                <tbody>
234
                                    <tr class="d-flex">
235
                                        <td style="width: 30%" class="font-weight-bold">Certificate download:</td>
236
                                        <td><button v-on:click="onCertificateDownload()" class="btn btn-primary btn-sm certificate-control" href="">Certificate</button></td>
237
                                        <td><button v-on:click="onChainDownload()" class="btn btn-primary btn-sm certificate-control" href="">Chain of trust</button></td>
238
                                        <td><button v-on:click="onRootDownload()" class="btn btn-primary btn-sm certificate-control" href="">Root</button></td>
239
                                    </tr>
240
                                    <tr class="d-flex">
241
                                        <td style="width: 30%" class="font-weight-bold">Key/Identity download:</td>
242
                                        <td><button v-on:click="onPublicKeyDownload()" class="btn btn-success btn-sm certificate-control" href="">Public key</button></td>
243
                                        <td><button v-on:click="onPrivateKeyDownload()" class="btn btn-success btn-sm certificate-control" href="">Private key</button></td>
244
                                        <td><button data-toggle="modal" data-target="#identityModal" class="btn btn-success btn-sm certificate-control" href="">PKCS #12</button></td>
245
                                    </tr>
246
                                    <tr class="d-flex">
247
                                        <td style="width: 30%" class="font-weight-bold">Actions:</td>
248
                                        <td><button data-toggle="modal" data-target="#deleteModal" class="btn btn-danger btn-sm certificate-control" href="">Delete</button></td>
249
                                        <td><button data-toggle="modal" data-target="#revokeModal" class="btn btn-warning btn-sm certificate-control" href="">Revoke</button></td>
250
                                        <td> </td>
251
                                    </tr>
252
                                    <tr class="d-flex">
253
                                        <td style="width: 30%" class="font-weight-bold">Endpoints:</td>
254
                                        <td><a class="certificate-control font-weight-bold" :href="crlEndpoint">CRL</a></td>
255
                                        <td><a class="certificate-control font-weight-bold" :href="ocspEndpoint">OCSP</a></td>
256
                                        <td> </td>
257
                                    </tr>
258
                                </tbody>
259
                            </table>
260
                        </div>
261
                        <div class="row table-responsive">
262
                            <table class="table table-striped table-hover">
263
                                <thead class="thead-dark text-center">
264
                                    <tr>
265
                                        <th scope="col" colspan="2">Issued Certificates</th>
266
                                    </tr>
267
                                    <tr>
268
                                        <th class="w-65" scope="col">Common Name</th>
269
                                        <th class="w-35" scope="col">Type</th>
270
                                    </tr>
271
                                </thead>
272
                                <tbody>
273
                                    <tr class="text-center font-italic">
274
                                        <td v-if="issuedCertificates.length == 0" colspan="2">No issued certificates</td>
275
                                    </tr>
276
                                    <tr is="issued-by-list-item"
277
                                        v-for="certificate in issuedCertificates"
278
                                        v-bind:certificate="certificate"
279
                                        v-bind:key="certificate.id">
280
                                    </tr>
281
                                </tbody>
282
                            </table>
283
                        </div>
284
                    </div>
285
                </div>
286
            </div>
287
        </div>
288
        <div id="identityModal" class="modal" tabindex="-1" role="dialog">
289
            <div class="modal-dialog" role="document">
290
                <div class="modal-content">
291
                    <div class="modal-header">
292
                        <h5 class="modal-title">Create identity</h5>
293
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
294
                            <span aria-hidden="true">&times;</span>
295
                        </button>
296
                    </div>
297
                    <div class="modal-body">
298
                        <p>Enter identity name and password:</p>
299
                        <div class="form-group">
300
                            <label for="reasonSelect">Name: </label>
301
                            <input v-model="identityName" type="text" class="form-control">
302
                        </div>
303
                        <div class="form-group">
304
                            <label for="reasonSelect">Password: </label>
305
                            <input v-model="identityPass" type="password" class="form-control">
306
                        </div>
307
                    </div>
308
                    <div class="modal-footer">
309
                        <button type="button" v-on:click="onIdentityDownload" class="btn btn-primary" data-dismiss="modal">Create</button>
310
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
311
                    </div>
312
                </div>
313
            </div>
314
        </div>
315
        <div id="revokeModal" class="modal" tabindex="-1" role="dialog">
316
            <div class="modal-dialog" role="document">
317
                <div class="modal-content">
318
                    <div class="modal-header">
319
                        <h5 class="modal-title">Revoke certificate</h5>
320
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
321
                            <span aria-hidden="true">&times;</span>
322
                        </button>
323
                    </div>
324
                    <div class="modal-body">
325
                        <p>Do you really want to revoke certificate {{ certificate.subject.CN }}?</p>
326
                        <div class="form-group">
327
                            <label for="reasonSelect">Reason: </label>
328
                            <select v-model="revocationReason" class="form-control" id="reasonSelect">
329
                                <option value="unspecified">unspecified</option>
330
                                <option value="keyCompromise">keyCompromise</option>
331
                                <option value="CACompromise">CACompromise</option>
332
                                <option value="affiliationChanged">affiliationChanged</option>
333
                                <option value="superseded">superseded</option>
334
                                <option value="cessationOfOperation">cessationOfOperation</option>
335
                                <option value="certificateHold">certificateHold</option>
336
                                <option value="removeFromCRL">removeFromCRL</option>
337
                            </select>
338
                        </div>
339
                    </div>
340
                    <div class="modal-footer">
341
                        <button type="button" v-on:click="onRevoke()" class="btn btn-warning" data-dismiss="modal">Revoke</button>
342
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
343
                    </div>
344
                </div>
345
            </div>
346
        </div>
347
        <div id="deleteModal" class="modal" tabindex="-1" role="dialog">
348
            <div class="modal-dialog" role="document">
349
                <div class="modal-content">
350
                    <div class="modal-header">
351
                        <h5 class="modal-title">Delete certificate</h5>
352
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
353
                            <span aria-hidden="true">&times;</span>
354
                        </button>
355
                    </div>
356
                    <div class="modal-body">
357
                        <p>Do you really want to delete certificate {{ certificate.subject.CN }}?</p>
358
                    </div>
359
                    <div class="modal-footer">
360
                        <button type="button" v-on:click="onDelete()" class="btn btn-danger" data-dismiss="modal">Delete</button>
361
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
362
                    </div>
363
                </div>
364
            </div>
365
        </div>
366
    </div>
367

    
368
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
369
    <script src="https://cdn.jsdelivr.net/npm/vue-loading-overlay@3"></script>
370
    <script src="/static/js/jquery-3.6.0.min.js"></script>
371
    <script src="/static/js/bootstrap.bundle.min.js"></script>
372
    <script src="/static/js/axios.min.js"></script>
373
    <script src="/static/js/FileSaver.min.js"></script>
374
    <script src="/static/js/constants.js"></script>
375
    <script src="/static/js/utilities.js"></script>
376
    <script src="/static/js/components.js"></script>
377
    <script src="/static/js/certificate.js"></script>
378

    
379
</body>
380
</html>
(1-1/4)