Neue Zertifikatsverwaltung
bernd authored 15 years ago
|
1) <?php
2)
3) require_once("certs.php");
4) require_role(ROLE_SYSTEMUSER);
5)
6) $section = 'vhosts_certs';
7)
8) if ($_GET['action'] == 'new')
9) {
10) check_form_token('vhosts_certs_new');
11) $cert = $_POST['cert'];
12) $key = $_POST['key'];
|
CSR-Erstellung
bernd authored 15 years ago
|
13) if (! isset($_POST['key']) && isset($_REQUEST['csr']))
14) {
15) $csr = csr_details($_REQUEST['csr']);
16) $key = $csr['key'];
17) }
18)
|
Neue Zertifikatsverwaltung
bernd authored 15 years ago
|
19) if (! $cert or ! $key)
20) system_failure('Es muss ein Zertifikat und der dazu passende private Schlüssel eingetragen werden');
21)
22) $result = validate_certificate($cert, $key);
23) switch ($result)
24) {
25) case CERT_OK:
26) $certinfo = parse_cert_details($cert);
|
Cert-Refresh
bernd authored 15 years ago
|
27) save_cert($certinfo, $cert, $key);
|
CSR-Erstellung
bernd authored 15 years ago
|
28) if (isset($_REQUEST['csr']))
29) delete_csr($_REQUEST['csr']);
|
Neue Zertifikatsverwaltung
bernd authored 15 years ago
|
30) header('Location: certs');
31) die();
32) break;
33) case CERT_INVALID:
34) system_failure("Das Zertifikat konnte nicht gelesen werden. Eventuell ist der private Schlüssel mit einem Paswort versehen?");
35) break;
36) case CERT_NOCHAIN:
37) warning('Ihr Zertifikat konnte nicht mit einer Zertifikats-Kette validiert werden. Dies wird zu Problemen beim Betrachten der damit betriebenen Websites führen. Meist liegt dies an einem nicht hinterlegten CA-Bundle. Die Admins können Ihr Zertifikats-Bundle auf dem System eintragen. Das Zertifikat wurde dennoch gespeichert.');
38) $certinfo = parse_cert_details($cert);
39) save_cert($certinfo, $cert, $key, $cabundle);
40) output('<p>'.internal_link('certs', 'Zurück zur Übersicht').'</p>');
|
CSR-Erstellung
bernd authored 15 years ago
|
41) if (isset($_REQUEST['csr']))
42) delete_csr($_REQUEST['csr']);
|
Neue Zertifikatsverwaltung
bernd authored 15 years ago
|
43) break;
44) }
45)
|
Cert-Refresh
bernd authored 15 years ago
|
46) }
47) elseif ($_GET['action'] == 'refresh')
48) {
49) check_form_token('vhosts_certs_refresh');
50) $cert = $_POST['cert'];
51) $oldcert = cert_details($_REQUEST['id']);
52) $key = $oldcert['key'];
53) $id = (int) $_REQUEST['id'];
54)
55) if (! $cert )
56) system_failure('Es muss ein Zertifikat eingetragen werden');
57)
58) $result = validate_certificate($cert, $key);
59) switch ($result)
60) {
61) case CERT_OK:
62) $certinfo = parse_cert_details($cert);
63) if ($certinfo['cn'] != $oldcert['cn'])
64) system_failure("Das neue Zertifikat enthält abweichende Daten. Legen Sie bitte ein neues Zertifikat an.");
65)
66) refresh_cert($id, $certinfo, $cert);
67) header('Location: certs');
68) die();
69) break;
70) case CERT_INVALID:
71) system_failure("Das Zertifikat konnte nicht gelesen werden. Eventuell ist es nicht wirklich eine neue Version des bisherigen Zertifikats.");
72) break;
73) case CERT_NOCHAIN:
74) warning('Ihr Zertifikat konnte nicht mit einer Zertifikats-Kette validiert werden. Dies wird zu Problemen beim Betrachten der damit betriebenen Websites führen. Meist liegt dies an einem nicht hinterlegten CA-Bundle. Die Admins können Ihr Zertifikats-Bundle auf dem System eintragen. Das Zertifikat wurde dennoch gespeichert.');
75) $certinfo = parse_cert_details($cert);
76) if ($certinfo['cn'] != $oldcert['cn'])
77) system_failure("Das neue Zertifikat enthält abweichende Daten. Legen Sie bitte ein neues Zertifikat an.");
78)
79) refresh_cert($id, $certinfo, $cert);
80) output('<p>'.internal_link('certs', 'Zurück zur Übersicht').'</p>');
81) break;
82) }
83)
|
Neue Zertifikatsverwaltung
bernd authored 15 years ago
|
84) }
85) elseif ($_GET['action'] == 'delete')
86) {
87) $cert = cert_details($_GET['id']);
88) $sure = user_is_sure();
89) if ($sure === NULL)
90) {
91) are_you_sure("action=delete&id={$cert['id']}", "Soll das Zertifikat für »{$cert['subject']}« (gültig von {$cert['valid_from']} bis {$cert['valid_until']}) wirklich entfernt werden?");
92) }
93) elseif ($sure === false)
94) {
95) header('Location: certs');
96) die();
97) }
98) elseif ($sure === true)
99) {
100) delete_cert($cert['id']);
101) header('Location: certs');
102) die();
103) }
104) }
|
CSR-Erstellung
bernd authored 15 years ago
|
105) elseif ($_GET['action'] == 'deletecsr')
106) {
107) $csr = csr_details($_GET['id']);
108) $sure = user_is_sure();
109) if ($sure === NULL)
110) {
111) are_you_sure("action=deletecsr&id={$csr['id']}", "Soll der CSR für »{$csr['hostname']}« ({$csr['bits']} Bits, erstellt am {$csr['created']}) wirklich entfernt werden?");
112) }
113) elseif ($sure === false)
114) {
115) header('Location: certs');
116) die();
117) }
118) elseif ($sure === true)
119) {
120) delete_csr($csr['id']);
121) header('Location: certs');
122) die();
123) }
124) }
125) elseif ($_GET['action'] == 'newcsr')
126) {
127) $cn = $_POST['commonname'];
128) $bitlength = $_POST['bitlength'];
129)
130) $wildcard = ! (count(explode('.', $cn)) > 2);
131) $id = save_csr($cn, $bitlength, $wildcard);
132)
133) header("Location: showcert?mode=csr&id={$id}");
134) die();
135) }
|