Projekt

Obecné

Profil

Stáhnout (14.1 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/app.css">
7
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
8
</head>
9
<body class="p-4">
10
    <div id="create-certificate-content" class="container-lg">
11
        <div class="row">
12
            <div class="col-lg-2"></div>
13
            <div class="col-lg card">
14
                <div class="card-body">
15
                    <h1 class="text-center">Create Certificate</h1>
16

    
17
                    <div v-if="errorMessage !== ''" class="alert alert-danger" v-cloak role="alert">
18
                        {{ errorMessage }}
19
                    </div>
20

    
21
                    <table class="ml-auto mr-auto">
22
                        <tr>
23
                            <div class="form-group">
24
                                <td><label for="CA">Certificate Authority:</label></td>
25
                                <td class="pl-3">
26
                                    <select v-model="certificateData.CA" name="CA" id="CA" class="form-control" :disabled="isSelfSigned">
27
                                        <option value=null disabled selected>-- Select issuer --</option>
28
                                        <option is="ca-select-item"
29
                                                v-for="ca in authorities"
30
                                                v-bind:ca="ca"
31
                                                v-bind:key="ca.id"></option>
32
                                    </select>
33
                                </td>
34
                                <td style="padding-left: 37px">
35
                                    <input class="form-check-input" :disabled="authorities.length === 0" v-model="isSelfSigned" type="checkbox" id="isSelfSigned" name="isSelfSigned" value="self-signed">
36
                                    <label class="form-check-label" for="isSelfSigned">Self-signed</label><br>
37
                                </td>
38
                            </div>
39
                        </tr>
40
                        <tr>
41
                            <div class="form-group">
42
                                <td><label for="validity_start">Validity start:</label></td>
43
                                <td class="pl-3"><input v-bind:value="notBefore" type="date" id="validity_start" name="validity_start" class="form-control" disabled></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"><input v-bind:value="notAfter" type="date" id="validity_end" name="validity_end" class="form-control" disabled></td>
50
                                <td class="pl-3">
51
                                    <span>
52
                                        <input v-model="certificateData.validityDays" type="number" min="1" id="validity_days" name="validity_days" class="form-control custom-control-inline" style="width: 70px; margin-right: 0">
53
                                        <label for="validity_days">days</label>
54
                                    </span>
55
                                </td>
56
                            </div>
57
                        </tr>
58
                        <tr>
59
                            <td colspan="2">
60
                                <h5>Subject</h5>
61
                            </td>
62
                            <td colspan="1" class="pl-3">
63
                                <a v-if="!showIssuer" v-on:click="toggleShowIssuer" href="#">Show issuer</a>
64
                                <h5 v-if="showIssuer">Issuer</h5>
65
                            </td>
66
                        </tr>
67
                        <tr>
68
                            <div class="form-group">
69
                                <td><label for="subject_CN">Common Name:</label></td>
70
                                <td class="pl-3">
71
                                    <input type="text" v-bind:class="{ 'is-invalid': invalidCN }" v-model:value="certificateData.subject.CN" id="subject_CN" name="subject_CN" class="form-control">
72
                                </td>
73
                                <td v-if="showIssuer" class="pl-3" v-cloak>
74
                                    <input type="text" id="issuer_CN" name="issuer_CN" class="form-control" v-bind:value="selectedCAData.CN" disabled>
75
                                </td>
76
                            </div>
77
                        </tr>
78
                        <tr>
79
                            <div class="form-group">
80
                                <td><label for="subject_C">Country Code:</label></td>
81
                                <td class="pl-3">
82
                                    <input type="text"  v-model:value="certificateData.subject.C" id="subject_C" name="subject_C" class="form-control">
83
                                </td>
84
                                <td v-if="showIssuer" class="pl-3" v-cloak>
85
                                    <input type="text" id="issuer_C" name="issuer_C" class="form-control" v-bind:value="selectedCAData.C" disabled>
86
                                </td>
87
                            </div>
88
                        </tr>
89
                        <tr>
90
                            <div class="form-group">
91
                                <td><label for="subject_L">Locality:</label></td>
92
                                <td class="pl-3">
93
                                    <input type="text" v-model:value="certificateData.subject.L" id="subject_L" name="subject_L" class="form-control">
94
                                </td>
95
                                <td v-if="showIssuer" class="pl-3" v-cloak>
96
                                    <input type="text" id="issuer_L" name="issuer_L" class="form-control" v-bind:value="selectedCAData.L" disabled>
97
                                </td>
98
                            </div>
99
                        </tr>
100
                        <tr>
101
                            <div class="form-group">
102
                                <td><label for="subject_ST">Province/State:</label></td>
103
                                <td class="pl-3">
104
                                    <input type="text" v-model:value="certificateData.subject.ST" id="subject_ST" name="subject_ST" class="form-control">
105
                                </td>
106
                                <td v-if="showIssuer" class="pl-3" v-cloak>
107
                                    <input type="text" id="issuer_ST" name="issuer_ST" class="form-control" v-bind:value="selectedCAData.ST" disabled>
108
                                </td>
109
                            </div>
110
                        </tr>
111
                        <tr>
112
                            <div class="form-group">
113
                                <td><label for="subject_O">Organization:</label></td>
114
                                <td class="pl-3">
115
                                    <input type="text" v-model:value="certificateData.subject.O" id="subject_O" name="subject_O" class="form-control">
116
                                </td>
117
                                <td v-if="showIssuer" class="pl-3" v-cloak>
118
                                    <input type="text" id="issuer_O" name="issuer_O" class="form-control" v-bind:value="selectedCAData.O" disabled>
119
                                </td>
120
                            </div>
121
                        </tr>
122
                        <tr>
123
                            <div class="form-group">
124
                                <td><label for="subject_OU">Organization Unit:</label></td>
125
                                <td class="pl-3">
126
                                    <input type="text" v-model:value="certificateData.subject.OU" id="subject_OU" name="subject_OU" class="form-control">
127
                                </td>
128
                                <td v-if="showIssuer" class="pl-3" v-cloak>
129
                                    <input type="text" id="issuer_OU" name="issuer_OU" class="form-control" v-bind:value="selectedCAData.OU" disabled>
130
                                </td>
131
                            </div>
132
                        </tr>
133
                        <tr>
134
                            <div class="form-group">
135
                                <td><label for="subject_emailAddress">Email:</label></td>
136
                                <td class="pl-3">
137
                                    <input type="email" v-model:value="certificateData.subject.emailAddress" id="subject_emailAddress" name="subject_emailAddress" class="form-control">
138
                                </td>
139
                                <td v-if="showIssuer" class="pl-3" v-cloak>
140
                                    <input type="email" id="issuer_emailAddress" name="issuer_emailAddress" class="form-control" v-bind:value="selectedCAData.emailAddress" disabled>
141
                                </td>
142
                            </div>
143
                        </tr>
144
                        <tr>
145
                            <td>Usage:</td>
146
                            <td class="form-check">
147
                                <input class="form-check-input" :disabled="isSelfSigned" v-model="certificateData.usage.CA" type="checkbox" id="isCA" name="isCA" value="CA">
148
                                <label class="form-check-label" for="isCA">CA</label><br>
149

    
150
                                <input class="form-check-input" v-model="certificateData.usage.digitalSignature" type="checkbox" id="isDigitalSignature" name="isDigitalSignature" value="DigitalSignature">
151
                                <label class="form-check-label" for="isDigitalSignature">Digital Signature</label><br>
152

    
153
                                <input class="form-check-input" v-model="certificateData.usage.authentication" type="checkbox" id="isAuthentication" name="isAuthentication" value="Authentication">
154
                                <label class="form-check-label" for="isAuthentication">Authentication</label><br>
155

    
156
                                <input class="form-check-input" v-model="certificateData.usage.SSL" type="checkbox" id="isSSL_TLS" name="isSSL_TLS" value="SSL_TLS">
157
                                <label class="form-check-label" for="isSSL_TLS">SSL/TLS</label><br>
158
                            </td>
159
                        </tr>
160
                        <tr>
161
                            <div class="form-group form-check">
162
                                <td><label class="form-check-label" for="specifyPasswordCheckbox" style="margin-top: 15px">Custom key:</label></td>
163
                                <td class="pl-3">
164
                                    <input type="checkbox" v-model="customKey" id="specifyPasswordCheckbox" name="specifyPassword" class="mb-2 form-check-input form-check">
165
                                </td>
166
                            </div>
167
                        </tr>
168
                        <tr v-if="customKey" v-cloak>
169
                            <div class="form-group">
170
                                <td class="pl-5"><label for="key_password">Password:</label></td>
171
                                <td class="pl-3" colspan="2">
172
                                    <input type="password" v-model:value="key.password" id="key_password" name="key_password" class="form-control">
173
                                </td>
174
                            </div>
175
                        </tr>
176
                        <tr v-if="customKey" v-cloak>
177
                            <div class="form-group">
178
                                <td class="pl-5"><label for="key_pem">Private key:</label></td>
179
                                <td class="pl-3" colspan="2">
180
                                    <input type="file" v-on:change="onKeyFileChange" id="key_pem" name="key_pem" class="form-control-file">
181
                                </td>
182
                            </div>
183
                        </tr>
184
                        <tr>
185
                            <div class="form-group form-check">
186
                                <td><label class="form-check-label" for="specifyExtensionsCheckbox" style="margin-top: 15px">Custom extensions:</label></td>
187
                                <td class="pl-3">
188
                                    <input type="checkbox" v-model="customExtensions" id="specifyExtensionsCheckbox" name="specifyExtensions" class="mb-2 form-check-input form-check">
189
                                </td>
190
                            </div>
191
                        </tr>
192
                        <tr v-if="customExtensions" v-cloak>
193
                            <div class="form-group">
194
                                <td class="pl-5"><label for="extensions">Extensions:</label></td>
195
                                <td cla ss="pl-3" colspan="2">
196
                                    <textarea v-model:value="extensions" id="extensions" name="extensions" class="form-control mt-2">
197
                                    </textarea>
198
                                </td>
199
                            </div>
200
                        </tr>
201
                    </table>
202
                    <div class="container">
203
                        <div class="">
204
                            <div class="col">
205
                                <button class="btn btn-success mt-3 w-100" v-on:click="onCreateCertificate">Create certificate</button>
206
                            </div>
207
                            <div class="col">
208
                                <button class="btn btn-secondary mt-3 w-100" onclick="window.location.href = '/static/index.html'">Cancel</button>
209
                            </div>
210
                        </div>
211
                    </div>
212
                </div>
213
            </div>
214
            <div class="col-lg-2"></div>
215
        </div>
216
    </div>
217

    
218
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
219
    <script src="/static/js/jquery-3.6.0.min.js"></script>
220
    <script src="/static/js/bootstrap.bundle.min.js"></script>
221
    <script src="/static/js/axios.min.js"></script>
222
    <script src="/static/js/constants.js"></script>
223
    <script src="/static/js/utilities.js"></script>
224
    <script src="/static/js/components.js"></script>
225
    <script src="/static/js/create_certificate.js"></script>
226
</body>
227
</html>
(2-2/4)