Browse code

Ermögliche einen Zertifikats-Renew mit gleichbleibendem Schlüssel

Bernd Wurst authored on20/02/2014 17:46:24
Showing3 changed files
... ...
@@ -130,7 +130,7 @@ function validate_certificate($cert, $key)
130 130
   // Prüfe ob Key und Zertifikat zusammen passen
131 131
   if (openssl_x509_check_private_key($cert, $key) !== true)
132 132
   {
133
-    DEBUG("Zertifikat und Key passen nicht zusammen");
133
+    DEBUG("Zertifikat und Key passen nicht zusammen: ".openssl_x509_check_private_key($cert, $key));
134 134
     return CERT_INVALID;
135 135
   }
136 136
 
... ...
@@ -59,8 +59,13 @@ $form = '
59 59
 <h4>Server-Zertifikat:</h4>
60 60
 <p><textarea name="cert" rows="10" cols="70"></textarea></p>
61 61
 
62
-<h4>privater Schlüssel:</h4>
63
-<p><textarea name="key" rows="10" cols="70"></textarea></p>
62
+<h4>privater Schlüssel:</h4>';
63
+
64
+if ($oldcert) {
65
+  $form .= '<p>Wenn Ihre Zertifizierungsstelle einen echten <em>renew</em>-Vorgang durchführt und das Zertifikat basierend auf dem alten CSR neu ausgestellt hat, brauchen Sie hier keinen privaten Schlüssel anzugeben.</p>';
66
+}
67
+
68
+$form .= '<p><textarea name="key" rows="10" cols="70"></textarea></p>
64 69
 
65 70
 <p><input type="submit" value="Speichern" /></p>
66 71
 
... ...
@@ -72,4 +77,4 @@ output('<p>Es ist ein <strong>Zertifikat</strong> und ein dazu passender <strong
72 77
 <pre>-----BEGIN CERTIFICATE-----
73 78
 ...
74 79
 -----END CERTIFICATE-----</pre>
75
-<p>aufweisen. Sind die genannten Vorausetzungen erfüllt, können Sie Ihre Zertifikats-Daten einfach in untenstehendes Formular eingeben.</p>');
80
+<p>aufweisen.');
... ...
@@ -26,18 +26,22 @@ if ($_GET['action'] == 'new')
26 26
     system_failure("Es wurde kein Zertifikat eingegeben");
27 27
   }
28 28
   $cert = $_POST['cert'];
29
+  $oldcert = NULL;
30
+  if (isset($_REQUEST['replace']) && is_numeric($_REQUEST['replace']))
31
+  {
32
+    $oldcert = cert_details($_REQUEST['replace']);
33
+    DEBUG('altes cert:');
34
+    DEBUG($oldcert);
35
+  }
29 36
   $key = NULL;
30 37
   if (! isset($_POST['key']) && isset($_REQUEST['csr']))
31 38
   {
32 39
     $csr = csr_details($_REQUEST['csr']);
33 40
     $key = $csr['key'];
34
-  } else {
35
-    $key = $_POST['key'];
36
-  }
37
-  $oldcert = NULL;
38
-  if (isset($_REQUEST['replace']) && is_numeric($_REQUEST['replace']))
39
-  {
40
-    $oldcert = cert_details($_REQUEST['replace']);
41
+  } elseif (isset($_POST['key']) and $_POST['key']) {
42
+    $key = $_POST['key']; 
43
+  } elseif ($oldcert) {
44
+    $key = $oldcert['key'];
41 45
   }
42 46
 
43 47
   if (! $cert or ! $key)