Erlaube nur RSA- und DSA-Zertifikate
bernd

bernd commited on 2010-12-30 18:39:04
Zeige 1 geänderte Dateien mit 11 Einfügungen und 1 Löschungen.


git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1867 87cf0b9e-d624-0410-a070-f6ee81989793
... ...
@@ -81,6 +81,16 @@ function get_chain($cert)
81 81
 
82 82
 function validate_certificate($cert, $key)
83 83
 {  
84
+  $certinfo = openssl_pkey_get_details(openssl_get_publickey($cert));
85
+  DEBUG($certinfo);
86
+  if ($certinfo['bits'] < 2048) {
87
+    warning("Dieser Schlüssel hat eine sehr geringe Bitlänge und ist daher als nicht besonders sicher einzustufen!");
88
+  }
89
+  if ($certinfo['type'] != OPENSSL_KEYTYPE_RSA && $certinfo['type'] != OPENSSL_KEYTYPE_DSA) {
90
+    system_failure("Dieser Schlüssel nutzt einen nicht unterstützten Algorithmus.");
91
+  }
92
+    
93
+  
84 94
   if (openssl_x509_check_private_key($cert, $key) !== true)
85 95
   {
86 96
     DEBUG("Zertifikat und Key passen nicht zusammen");
... ...
@@ -114,7 +124,7 @@ validTo_time_t => 1267190790
114 124
 
115 125
 
116 126
   */
117
- 
127
+  DEBUG($certdata);
118 128
   //return array('subject' => $certdata['name'], 'cn' => $certdata['subject']['CN'], 'valid_from' => date('Y-m-d', $certdata['validFrom_time_t']), 'valid_until' => date('Y-m-d', $certdata['validTo_time_t']));
119 129
   return array('subject' => $certdata['subject']['CN'].' / '.$certdata['issuer']['O'], 'cn' => $certdata['subject']['CN'], 'valid_from' => date('Y-m-d', $certdata['validFrom_time_t']), 'valid_until' => date('Y-m-d', $certdata['validTo_time_t']), 'issuer' => $certdata['issuer']['CN']);
120 130
 }
121 131