1aaaa700cdfda9c1e0bd92741205d07d8e0132de
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)   }
bernd neue Bilder, mehr SSL-Zerti...

bernd authored 14 years ago

18)   $oldcert = NULL;
19)   if ($_REQUEST['replace'])
20)   {
21)     $oldcert = cert_details($_REQUEST['replace']);
22)   }
bernd CSR-Erstellung

bernd authored 14 years ago

23) 
bernd Neue Zertifikatsverwaltung

bernd authored 14 years ago

24)   if (! $cert or ! $key)
25)     system_failure('Es muss ein Zertifikat und der dazu passende private Schlüssel eingetragen werden');
26) 
27)   $result = validate_certificate($cert, $key);
28)   switch ($result)
29)   {
30)     case CERT_OK:
31)       $certinfo = parse_cert_details($cert);
bernd neue Bilder, mehr SSL-Zerti...

bernd authored 14 years ago

32)       if ($oldcert)
33)         refresh_cert($oldcert['id'], $certinfo, $cert, $key);
34)       else
35)         save_cert($certinfo, $cert, $key);
bernd CSR-Erstellung

bernd authored 14 years ago

36)       if (isset($_REQUEST['csr']))
37)         delete_csr($_REQUEST['csr']);
bernd Neue Zertifikatsverwaltung

bernd authored 14 years ago

38)       header('Location: certs');
39)       die();
40)       break;
41)     case CERT_INVALID:
42)       system_failure("Das Zertifikat konnte nicht gelesen werden. Eventuell ist der private Schlüssel mit einem Paswort versehen?");
43)       break;
44)     case CERT_NOCHAIN:
hanno fehlermeldung genauer, abge...

hanno authored 13 years ago

45)       warning('Ihr Zertifikat konnte nicht mit einer Zertifikats-Kette validiert werden. Dies wird zu Problemen beim Betrachten der damit betriebenen Websites führen. Dies kann daran liegen dass es abgelaufen ist oder wenn kein passendes CA-Bundle hinterlegt wurde. Die Admins können Ihr Zertifikats-Bundle auf dem System eintragen. Das Zertifikat wurde dennoch gespeichert.');
bernd Neue Zertifikatsverwaltung

bernd authored 14 years ago

46)       $certinfo = parse_cert_details($cert);
bernd neue Bilder, mehr SSL-Zerti...

bernd authored 14 years ago

47)       if ($oldcert)
48)         refresh_cert($oldcert['id'], $certinfo, $cert, $key);
49)       else
50)         save_cert($certinfo, $cert, $key);
bernd Neue Zertifikatsverwaltung

bernd authored 14 years ago

51)       output('<p>'.internal_link('certs', 'Zurück zur Übersicht').'</p>');
bernd CSR-Erstellung

bernd authored 14 years ago

52)       if (isset($_REQUEST['csr']))
53)         delete_csr($_REQUEST['csr']);
bernd Neue Zertifikatsverwaltung

bernd authored 14 years ago

54)       break;
55)   }
56) 
bernd Cert-Refresh

bernd authored 14 years ago

57) }
58) elseif ($_GET['action'] == 'refresh')
59) {
60)   check_form_token('vhosts_certs_refresh');
61)   $cert = $_POST['cert'];
62)   $oldcert = cert_details($_REQUEST['id']);
63)   $key = $oldcert['key'];
64)   $id = (int) $_REQUEST['id'];
65) 
66)   if (! $cert )
67)     system_failure('Es muss ein Zertifikat eingetragen werden');
68) 
69)   $result = validate_certificate($cert, $key);
70)   switch ($result)
71)   {
72)     case CERT_OK:
73)       $certinfo = parse_cert_details($cert);
74)       if ($certinfo['cn'] != $oldcert['cn'])
75)         system_failure("Das neue Zertifikat enthält abweichende Daten. Legen Sie bitte ein neues Zertifikat an.");
76) 
77)       refresh_cert($id, $certinfo, $cert);
78)       header('Location: certs');
79)       die();
80)       break;
81)     case CERT_INVALID:
82)       system_failure("Das Zertifikat konnte nicht gelesen werden. Eventuell ist es nicht wirklich eine neue Version des bisherigen Zertifikats.");
83)       break;
84)     case CERT_NOCHAIN:
85)       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.');
86)       $certinfo = parse_cert_details($cert);
87)       if ($certinfo['cn'] != $oldcert['cn'])
88)         system_failure("Das neue Zertifikat enthält abweichende Daten. Legen Sie bitte ein neues Zertifikat an.");
89) 
90)       refresh_cert($id, $certinfo, $cert);
91)       output('<p>'.internal_link('certs', 'Zurück zur Übersicht').'</p>');
92)       break;
93)   }
94) 
bernd Neue Zertifikatsverwaltung

bernd authored 14 years ago

95) }
96) elseif ($_GET['action'] == 'delete')
97) {
98)   $cert = cert_details($_GET['id']);
99)   $sure = user_is_sure();
100)   if ($sure === NULL)
101)   {
102)     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?");
103)   }
104)   elseif ($sure === false)
105)   {
106)     header('Location: certs');
107)     die();
108)   }
109)   elseif ($sure === true)
110)   { 
111)     delete_cert($cert['id']);
112)     header('Location: certs');
113)     die();
114)   }
115) }
bernd CSR-Erstellung

bernd authored 14 years ago

116) elseif ($_GET['action'] == 'deletecsr')
117) {
118)   $csr = csr_details($_GET['id']);
119)   $sure = user_is_sure();
120)   if ($sure === NULL)
121)   {
122)     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?");
123)   }
124)   elseif ($sure === false)
125)   {
126)     header('Location: certs');
127)     die();
128)   }
129)   elseif ($sure === true)
130)   { 
131)     delete_csr($csr['id']);
132)     header('Location: certs');
133)     die();
134)   }
135) }
136) elseif ($_GET['action'] == 'newcsr')
137) {
138)   $cn = $_POST['commonname'];
139)   $bitlength = $_POST['bitlength'];
140)   
141)   $wildcard = ! (count(explode('.', $cn)) > 2);
142)   $id = save_csr($cn, $bitlength, $wildcard);
143) 
144)   header("Location: showcert?mode=csr&id={$id}");
145)   die();
146) }