1319a6d95bd61316641539a7d0b8237c629a557e
bernd Neue Zertifikatsverwaltung

bernd authored 14 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'];
bernd CSR-Erstellung

bernd authored 14 years ago

13)   if (! isset($_POST['key']) && isset($_REQUEST['csr']))
14)   {
15)     $csr = csr_details($_REQUEST['csr']);
16)     $key = $csr['key'];
17)   }
18) 
bernd Neue Zertifikatsverwaltung

bernd authored 14 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);
27)       save_cert($certinfo, $cert, $key, $cabundle);
bernd CSR-Erstellung

bernd authored 14 years ago

28)       if (isset($_REQUEST['csr']))
29)         delete_csr($_REQUEST['csr']);
bernd Neue Zertifikatsverwaltung

bernd authored 14 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>');
bernd CSR-Erstellung

bernd authored 14 years ago

41)       if (isset($_REQUEST['csr']))
42)         delete_csr($_REQUEST['csr']);
bernd Neue Zertifikatsverwaltung

bernd authored 14 years ago

43)       break;
44)   }
45) 
46) }
47) elseif ($_GET['action'] == 'delete')
48) {
49)   $cert = cert_details($_GET['id']);
50)   $sure = user_is_sure();
51)   if ($sure === NULL)
52)   {
53)     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?");
54)   }
55)   elseif ($sure === false)
56)   {
57)     header('Location: certs');
58)     die();
59)   }
60)   elseif ($sure === true)
61)   { 
62)     delete_cert($cert['id']);
63)     header('Location: certs');
64)     die();
65)   }
66) }
bernd CSR-Erstellung

bernd authored 14 years ago

67) elseif ($_GET['action'] == 'deletecsr')
68) {
69)   $csr = csr_details($_GET['id']);
70)   $sure = user_is_sure();
71)   if ($sure === NULL)
72)   {
73)     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?");
74)   }
75)   elseif ($sure === false)
76)   {
77)     header('Location: certs');
78)     die();
79)   }
80)   elseif ($sure === true)
81)   { 
82)     delete_csr($csr['id']);
83)     header('Location: certs');
84)     die();
85)   }
86) }
87) elseif ($_GET['action'] == 'newcsr')
88) {
89)   $cn = $_POST['commonname'];
90)   $bitlength = $_POST['bitlength'];
91)   
92)   $wildcard = ! (count(explode('.', $cn)) > 2);
93)   $id = save_csr($cn, $bitlength, $wildcard);
94) 
95)   header("Location: showcert?mode=csr&id={$id}");
96)   die();
97) }