1 |
785793c3
|
David Friesecký
|
<!DOCTYPE html>
|
2 |
|
|
<html lang="en">
|
3 |
|
|
<head>
|
4 |
|
|
<meta charset="UTF-8">
|
5 |
|
|
<title>X.509 Certificate Management</title>
|
6 |
5f5de859
|
David Friesecký
|
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
|
7 |
5885e489
|
Jan Pašek
|
<link href="https://cdn.jsdelivr.net/npm/vue-loading-overlay@3/dist/vue-loading.css" rel="stylesheet">
|
8 |
9c4ac3c5
|
Jan Pašek
|
<link rel="stylesheet" href="/static/css/app.css">
|
9 |
785793c3
|
David Friesecký
|
</head>
|
10 |
|
|
<body class="p-4">
|
11 |
5f5de859
|
David Friesecký
|
<div id="certificate-detailed-view-content" class="p-4">
|
12 |
5885e489
|
Jan Pašek
|
<div v-if="loading">
|
13 |
|
|
<loading :active.sync="loading"
|
14 |
|
|
:can-cancel="false"
|
15 |
|
|
loader="dots"
|
16 |
|
|
:is-full-page="true"></loading>
|
17 |
f2316dc4
|
David Friesecký
|
</div>
|
18 |
5885e489
|
Jan Pašek
|
<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 |
443d18f2
|
David Friesecký
|
</div>
|
24 |
5885e489
|
Jan Pašek
|
<div v-if="!loading && !error" v-cloak>
|
25 |
|
|
<div class="row">
|
26 |
|
|
<a href="/static/index.html"><div class="caret-left font-weight-bold ml-2 mb-2">Home</div></a>
|
27 |
|
|
</div>
|
28 |
|
|
<h1 class="mb-5 text-center">Certificate Detailed View</h1>
|
29 |
|
|
<div class="alert alert-success" v-if="successMessage !== ''" role="alert" v-cloak>
|
30 |
|
|
{{ successMessage }}
|
31 |
|
|
</div>
|
32 |
|
|
<div v-if="errorMessage !== ''" class="alert alert-danger" v-cloak role="alert">
|
33 |
|
|
{{ errorMessage }}
|
34 |
|
|
</div>
|
35 |
|
|
<div class="row">
|
36 |
|
|
<div class="col-xl-6">
|
37 |
|
|
<table class="ml-auto mr-auto mb-4">
|
38 |
|
|
<tr>
|
39 |
|
|
<div class="form-group">
|
40 |
|
|
<td><label for="validity_start">Validity start:</label></td>
|
41 |
|
|
<td class="pl-3">
|
42 |
|
|
<input :value="startDate" type="text" id="validity_start" name="validity_start" class="form-control" disabled>
|
43 |
|
|
</td>
|
44 |
|
|
</div>
|
45 |
|
|
</tr>
|
46 |
|
|
<tr>
|
47 |
|
|
<div class="form-group">
|
48 |
|
|
<td><label for="validity_end">Validity end:</label></td>
|
49 |
|
|
<td class="pl-3">
|
50 |
|
|
<input :value="endDate" type="text" id="validity_end" name="validity_end" class="form-control" disabled>
|
51 |
|
|
</td>
|
52 |
|
|
</div>
|
53 |
|
|
</tr>
|
54 |
|
|
<tr>
|
55 |
|
|
<td colspan="2"><h5>Subject</h5></td>
|
56 |
|
|
</tr>
|
57 |
|
|
<tr>
|
58 |
|
|
<div class="form-group">
|
59 |
|
|
<td><label for="subject_C">Country Code:</label></td>
|
60 |
|
|
<td class="pl-3">
|
61 |
|
|
<input :value="certificate.subject.C" type="text" id="subject_C" name="subject_C" class="form-control" disabled>
|
62 |
|
|
</td>
|
63 |
|
|
</div>
|
64 |
|
|
</tr>
|
65 |
|
|
<tr>
|
66 |
|
|
<div class="form-group">
|
67 |
|
|
<td><label for="subject_ST">Province/State:</label></td>
|
68 |
|
|
<td class="pl-3">
|
69 |
|
|
<input :value="certificate.subject.ST" type="text" id="subject_ST" name="subject_ST" class="form-control" disabled>
|
70 |
|
|
</td>
|
71 |
|
|
</div>
|
72 |
|
|
</tr>
|
73 |
|
|
<tr>
|
74 |
|
|
<div class="form-group">
|
75 |
|
|
<td><label for="subject_L">Locality:</label></td>
|
76 |
|
|
<td class="pl-3">
|
77 |
|
|
<input :value="certificate.subject.L" type="text" id="subject_L" name="subject_L" class="form-control" disabled>
|
78 |
|
|
</td>
|
79 |
|
|
</div>
|
80 |
|
|
</tr>
|
81 |
|
|
<tr>
|
82 |
|
|
<div class="form-group">
|
83 |
|
|
<td><label for="subject_CN">Common Name:</label></td>
|
84 |
|
|
<td class="pl-3">
|
85 |
|
|
<input :value="certificate.subject.CN" type="text" id="subject_CN" name="subject_CN" class="form-control" disabled>
|
86 |
|
|
</td>
|
87 |
|
|
</div>
|
88 |
|
|
</tr>
|
89 |
|
|
<tr>
|
90 |
|
|
<div class="form-group">
|
91 |
|
|
<td><label for="subject_O">Organization:</label></td>
|
92 |
|
|
<td class="pl-3">
|
93 |
|
|
<input :value="certificate.subject.O" type="text" id="subject_O" name="subject_O" class="form-control" disabled>
|
94 |
|
|
</td>
|
95 |
|
|
</div>
|
96 |
|
|
</tr>
|
97 |
|
|
<tr>
|
98 |
|
|
<div class="form-group">
|
99 |
|
|
<td><label for="subject_OU">Organization Unit:</label></td>
|
100 |
|
|
<td class="pl-3">
|
101 |
|
|
<input :value="certificate.subject.OU" type="text" id="subject_OU" name="subject_OU" class="form-control" disabled>
|
102 |
|
|
</td>
|
103 |
|
|
</div>
|
104 |
|
|
</tr>
|
105 |
|
|
<tr>
|
106 |
|
|
<div class="form-group">
|
107 |
|
|
<td><label for="subject_emailAddress">Email Address:</label></td>
|
108 |
|
|
<td class="pl-3">
|
109 |
|
|
<input :value="certificate.subject.emailAddress" type="text" id="subject_emailAddress" name="subject_emailAddress" class="form-control" disabled>
|
110 |
|
|
</td>
|
111 |
|
|
</div>
|
112 |
|
|
</tr>
|
113 |
|
|
<tr>
|
114 |
|
|
<td>Usage:</td>
|
115 |
|
|
<td class="form-check">
|
116 |
|
|
<input class="form-check-input" v-model="certificate.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA" disabled>
|
117 |
|
|
<label class="form-check-label" for="isCA">CA</label><br>
|
118 |
f2316dc4
|
David Friesecký
|
|
119 |
5885e489
|
Jan Pašek
|
<input class="form-check-input" v-model="certificate.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature" disabled>
|
120 |
|
|
<label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
|
121 |
f2316dc4
|
David Friesecký
|
|
122 |
5885e489
|
Jan Pašek
|
<input class="form-check-input" v-model="certificate.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication" disabled>
|
123 |
|
|
<label class="form-check-label" for="isAuthentication">Authentication</label><br>
|
124 |
f2316dc4
|
David Friesecký
|
|
125 |
5885e489
|
Jan Pašek
|
<input class="form-check-input" v-model="certificate.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS" disabled>
|
126 |
|
|
<label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
|
127 |
|
|
</td>
|
128 |
|
|
</tr>
|
129 |
5f211e7b
|
Jan Pašek
|
</table>
|
130 |
|
|
</div>
|
131 |
5885e489
|
Jan Pašek
|
<div class="col-xl-5">
|
132 |
|
|
<div class="row table-responsive">
|
133 |
fa272659
|
Jan Pašek
|
<table class="table">
|
134 |
5885e489
|
Jan Pašek
|
<thead class="thead-dark">
|
135 |
|
|
<tr>
|
136 |
|
|
<th colspan="4" class="text-center">Manage certificate</th>
|
137 |
|
|
</tr>
|
138 |
|
|
</thead>
|
139 |
|
|
<tbody>
|
140 |
|
|
<tr class="d-flex">
|
141 |
|
|
<td style="width: 30%" class="font-weight-bold">Certificate download:</td>
|
142 |
366cd6f3
|
Jan Pašek
|
<td><button v-on:click="onCertificateDownload()" class="btn btn-primary btn-sm certificate-control" href="">Certificate</button></td>
|
143 |
|
|
<td><button v-on:click="onChainDownload()" class="btn btn-primary btn-sm certificate-control" href="">Chain of trust</button></td>
|
144 |
|
|
<td><button v-on:click="onRootDownload()" class="btn btn-primary btn-sm certificate-control" href="">Root</button></td>
|
145 |
5885e489
|
Jan Pašek
|
</tr>
|
146 |
|
|
<tr class="d-flex">
|
147 |
|
|
<td style="width: 30%" class="font-weight-bold">Key download:</td>
|
148 |
366cd6f3
|
Jan Pašek
|
<td><button v-on:click="onPublicKeyDownload()" class="btn btn-success btn-sm certificate-control" href="">Public key</button></td>
|
149 |
|
|
<td><button v-on:click="onPrivateKeyDownload()" class="btn btn-success btn-sm certificate-control" href="">Private key</button></td>
|
150 |
5885e489
|
Jan Pašek
|
<td> </td>
|
151 |
|
|
</tr>
|
152 |
|
|
<tr class="d-flex">
|
153 |
|
|
<td style="width: 30%" class="font-weight-bold">Actions:</td>
|
154 |
366cd6f3
|
Jan Pašek
|
<td><button data-toggle="modal" data-target="#deleteModal" class="btn btn-danger btn-sm certificate-control" href="">Delete</button></td>
|
155 |
|
|
<td><button data-toggle="modal" data-target="#revokeModal" class="btn btn-warning btn-sm certificate-control" href="">Revoke</button></td>
|
156 |
5885e489
|
Jan Pašek
|
<td> </td>
|
157 |
|
|
</tr>
|
158 |
|
|
<tr class="d-flex">
|
159 |
|
|
<td style="width: 30%" class="font-weight-bold">Endpoints:</td>
|
160 |
|
|
<td><a class="certificate-control font-weight-bold" :href="crlEndpoint">CRL</a></td>
|
161 |
|
|
<td><a class="certificate-control font-weight-bold" :href="ocspEndpoint">OCSP</a></td>
|
162 |
|
|
<td> </td>
|
163 |
|
|
</tr>
|
164 |
|
|
<tr class="d-flex" v-if="id != certificate.CA">
|
165 |
|
|
<td style="width: 30%" class="font-weight-bold">Issuer:</td>
|
166 |
|
|
<td><a class="certificate-control font-weight-bold" :href="issuerURL">show details</a></td>
|
167 |
|
|
<td> </td>
|
168 |
|
|
<td> </td>
|
169 |
|
|
</tr>
|
170 |
|
|
</tbody>
|
171 |
|
|
</table>
|
172 |
|
|
</div>
|
173 |
|
|
<div class="row table-responsive">
|
174 |
|
|
<table class="table table-striped table-hover">
|
175 |
|
|
<thead class="thead-dark text-center">
|
176 |
|
|
<tr>
|
177 |
|
|
<th scope="col" colspan="2">Issued Certificates</th>
|
178 |
|
|
</tr>
|
179 |
|
|
<tr>
|
180 |
|
|
<th class="w-65" scope="col">Common Name</th>
|
181 |
|
|
<th class="w-35" scope="col">Type</th>
|
182 |
|
|
</tr>
|
183 |
|
|
</thead>
|
184 |
|
|
<tbody>
|
185 |
56b36ca7
|
Jan Pašek
|
<tr class="text-center font-italic">
|
186 |
|
|
<td v-if="issuedCertificates.length == 0" colspan="2">No issued certificates</td>
|
187 |
5885e489
|
Jan Pašek
|
</tr>
|
188 |
56b36ca7
|
Jan Pašek
|
<tr is="issued-by-list-item"
|
189 |
|
|
v-for="certificate in issuedCertificates"
|
190 |
|
|
v-bind:certificate="certificate"
|
191 |
|
|
v-bind:key="certificate.id">
|
192 |
5885e489
|
Jan Pašek
|
</tr>
|
193 |
|
|
</tbody>
|
194 |
|
|
</table>
|
195 |
|
|
</div>
|
196 |
5f211e7b
|
Jan Pašek
|
</div>
|
197 |
785793c3
|
David Friesecký
|
</div>
|
198 |
|
|
</div>
|
199 |
366cd6f3
|
Jan Pašek
|
<div id="revokeModal" class="modal" tabindex="-1" role="dialog">
|
200 |
|
|
<div class="modal-dialog" role="document">
|
201 |
|
|
<div class="modal-content">
|
202 |
|
|
<div class="modal-header">
|
203 |
|
|
<h5 class="modal-title">Revoke certificate</h5>
|
204 |
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
205 |
|
|
<span aria-hidden="true">×</span>
|
206 |
|
|
</button>
|
207 |
|
|
</div>
|
208 |
|
|
<div class="modal-body">
|
209 |
|
|
<p>Do you really want to revoke certificate {{ certificate.subject.CN }}?</p>
|
210 |
|
|
<div class="form-group">
|
211 |
|
|
<label for="reasonSelect">Reason: </label>
|
212 |
|
|
<select v-model="revocationReason" class="form-control" id="reasonSelect">
|
213 |
|
|
<option value="unspecified">unspecified</option>
|
214 |
|
|
<option value="keyCompromise">keyCompromise</option>
|
215 |
4108c18c
|
Jan Pašek
|
<option value="CACompromise">CACompromise</option>
|
216 |
366cd6f3
|
Jan Pašek
|
<option value="affiliationChanged">affiliationChanged</option>
|
217 |
|
|
<option value="superseded">superseded</option>
|
218 |
|
|
<option value="cessationOfOperation">cessationOfOperation</option>
|
219 |
|
|
<option value="certificateHold">certificateHold</option>
|
220 |
|
|
<option value="removeFromCRL">removeFromCRL</option>
|
221 |
|
|
</select>
|
222 |
|
|
</div>
|
223 |
|
|
</div>
|
224 |
|
|
<div class="modal-footer">
|
225 |
|
|
<button type="button" v-on:click="onRevoke()" class="btn btn-warning" data-dismiss="modal">Revoke</button>
|
226 |
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
227 |
|
|
</div>
|
228 |
|
|
</div>
|
229 |
|
|
</div>
|
230 |
|
|
</div>
|
231 |
02954c9d
|
Jan Pašek
|
<div id="deleteModal" class="modal" tabindex="-1" role="dialog">
|
232 |
366cd6f3
|
Jan Pašek
|
<div class="modal-dialog" role="document">
|
233 |
|
|
<div class="modal-content">
|
234 |
|
|
<div class="modal-header">
|
235 |
|
|
<h5 class="modal-title">Delete certificate</h5>
|
236 |
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
237 |
|
|
<span aria-hidden="true">×</span>
|
238 |
|
|
</button>
|
239 |
|
|
</div>
|
240 |
|
|
<div class="modal-body">
|
241 |
|
|
<p>Do you really want to delete certificate {{ certificate.subject.CN }}?</p>
|
242 |
|
|
</div>
|
243 |
|
|
<div class="modal-footer">
|
244 |
|
|
<button type="button" v-on:click="onDelete()" class="btn btn-danger" data-dismiss="modal">Delete</button>
|
245 |
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
246 |
|
|
</div>
|
247 |
|
|
</div>
|
248 |
|
|
</div>
|
249 |
|
|
</div>
|
250 |
785793c3
|
David Friesecký
|
</div>
|
251 |
|
|
|
252 |
9c4ac3c5
|
Jan Pašek
|
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
|
253 |
5885e489
|
Jan Pašek
|
<script src="https://cdn.jsdelivr.net/npm/vue-loading-overlay@3"></script>
|
254 |
5f5de859
|
David Friesecký
|
<script src="/static/js/jquery-3.6.0.min.js"></script>
|
255 |
|
|
<script src="/static/js/bootstrap.bundle.min.js"></script>
|
256 |
9c4ac3c5
|
Jan Pašek
|
<script src="/static/js/axios.min.js"></script>
|
257 |
|
|
<script src="/static/js/constants.js"></script>
|
258 |
|
|
<script src="/static/js/utilities.js"></script>
|
259 |
|
|
<script src="/static/js/components.js"></script>
|
260 |
|
|
<script src="/static/js/certificate.js"></script>
|
261 |
|
|
|
262 |
785793c3
|
David Friesecký
|
</body>
|
263 |
|
|
</html>
|