Bernd Wurst commited on 2015-11-30 13:17:38
Zeige 2 geänderte Dateien mit 30 Einfügungen und 4 Löschungen.
| ... | ... |
@@ -48,12 +48,23 @@ function cert_details($id) |
| 48 | 48 |
$id = (int) $id; |
| 49 | 49 |
$uid = (int) $_SESSION['userinfo']['uid']; |
| 50 | 50 |
|
| 51 |
- $result = db_query("SELECT id, lastchange, valid_from, valid_until, subject, cn, cert, `key` FROM vhosts.certs WHERE uid=:uid AND id=:id", array(":uid" => $uid, ":id" => $id));
|
|
| 51 |
+ $result = db_query("SELECT id, lastchange, valid_from, valid_until, subject, cn, chain, cert, `key` FROM vhosts.certs WHERE uid=:uid AND id=:id", array(":uid" => $uid, ":id" => $id));
|
|
| 52 | 52 |
if ($result->rowCount() != 1) |
| 53 | 53 |
system_failure("Ungültiges Zertifikat #{$id}");
|
| 54 | 54 |
return $result->fetch(); |
| 55 | 55 |
} |
| 56 | 56 |
|
| 57 |
+function cert_is_letsencrypt($id) |
|
| 58 |
+{
|
|
| 59 |
+ $details = cert_details($id); |
|
| 60 |
+ if (strstr($details['subject'], 'happy hacker fake CA') || |
|
| 61 |
+ strstr($details['subject'], "Let's Encrypt Authority X1") || |
|
| 62 |
+ $details['chain'] == 18) {
|
|
| 63 |
+ return true; |
|
| 64 |
+ } |
|
| 65 |
+ return false; |
|
| 66 |
+} |
|
| 67 |
+ |
|
| 57 | 68 |
|
| 58 | 69 |
function csr_details($id) |
| 59 | 70 |
{
|
| ... | ... |
@@ -216,12 +216,27 @@ if ($_GET['action'] == 'edit') |
| 216 | 216 |
if ($aliaswww) {
|
| 217 | 217 |
array_push($new_options, 'aliaswww'); |
| 218 | 218 |
} |
| 219 |
- if ($cert == -1) {
|
|
| 219 |
+ $letsencrypt = ($cert == 0 ? false : ($cert == -1 || cert_is_letsencrypt($cert))); |
|
| 220 |
+ |
|
| 221 |
+ if ($letsencrypt) {
|
|
| 220 | 222 |
array_push($new_options, 'letsencrypt'); |
| 221 | 223 |
if ($vhost['cert'] != 0) {
|
| 222 |
- # FIXME: Wenn der User manuell von einem gültigen Cert auf "letsencrypt" umgestellt hat, |
|
| 224 |
+ # Wenn der User manuell von einem gültigen Cert auf "letsencrypt" umgestellt hat, |
|
| 223 | 225 |
# dann sollte das alte Cert noch so lange eingetragen bleiben bis das neue da ist. |
| 224 |
- $cert = $vhost['cert'] |
|
| 226 |
+ $cert = $vhost['cert']; |
|
| 227 |
+ } elseif ($cert > 0) {
|
|
| 228 |
+ # Das Cert was der user gewählt hat, ist von Lets encrypt |
|
| 229 |
+ # tu nix, $cert ist schon korrekt |
|
| 230 |
+ } else {
|
|
| 231 |
+ # Wenn vorher kein Zertifikat aktiv war, dann setze jetzt auch keines. |
|
| 232 |
+ # Der letsencrypt-Automatismus macht das dann schon. |
|
| 233 |
+ $cert = 0; |
|
| 234 |
+ } |
|
| 235 |
+ } else {
|
|
| 236 |
+ # Wenn kein Letsencrypt gewünscht ist, entferne die Letsencrypt-Option |
|
| 237 |
+ $key = array_search('letsencrypt',$new_options);
|
|
| 238 |
+ if ($key !== false) {
|
|
| 239 |
+ unset($new_options[$key]); |
|
| 225 | 240 |
} |
| 226 | 241 |
} |
| 227 | 242 |
|
| 228 | 243 |