Bernd Wurst commited on 2017-01-26 17:04:00
Zeige 1 geänderte Dateien mit 20 Einfügungen und 6 Löschungen.
| ... | ... |
@@ -196,12 +196,24 @@ validTo_time_t => 1267190790 |
| 196 | 196 |
|
| 197 | 197 |
*/ |
| 198 | 198 |
DEBUG($certdata); |
| 199 |
+ DEBUG("SAN: ".$certdata['extensions']['subjectAltName']);
|
|
| 199 | 200 |
//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']));
|
| 200 | 201 |
$issuer = $certdata['issuer']['CN']; |
| 201 | 202 |
if (isset($certdata['issuer']['O'])) {
|
| 202 | 203 |
$issuer = $certdata['issuer']['O']; |
| 203 | 204 |
} |
| 204 |
- return array('subject' => $certdata['subject']['CN'].' / '.$issuer, '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']);
|
|
| 205 |
+ $san = array(); |
|
| 206 |
+ $raw_san = explode(', ', $certdata['extensions']['subjectAltName']);
|
|
| 207 |
+ foreach ($raw_san as $name) {
|
|
| 208 |
+ if (! substr($name, 0, 4) == 'DNS:') {
|
|
| 209 |
+ warning('Unparsable SAN: '.$name);
|
|
| 210 |
+ continue; |
|
| 211 |
+ } |
|
| 212 |
+ $san[] = str_replace('DNS:', '', $name);
|
|
| 213 |
+ } |
|
| 214 |
+ $san = implode("\n", $san);
|
|
| 215 |
+ DEBUG("SAN: <pre>".$san."</pre>");
|
|
| 216 |
+ return array('subject' => $certdata['subject']['CN'].' / '.$issuer, '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'], 'san' => $san);
|
|
| 205 | 217 |
} |
| 206 | 218 |
|
| 207 | 219 |
|
| ... | ... |
@@ -211,8 +223,8 @@ function save_cert($info, $cert, $key) |
| 211 | 223 |
openssl_x509_export($cert, $cert); |
| 212 | 224 |
$uid = (int) $_SESSION['userinfo']['uid']; |
| 213 | 225 |
|
| 214 |
- db_query("INSERT INTO vhosts.certs (uid, subject, cn, valid_from, valid_until, chain, cert, `key`) VALUES (:uid, :subject, :cn, :valid_from, :valid_until, :chain, :cert, :key)",
|
|
| 215 |
- array(":uid" => $uid, ":subject" => filter_input_general($info['subject']), ":cn" => filter_input_general($info['cn']), ":valid_from" => $info['valid_from'],
|
|
| 226 |
+ db_query("INSERT INTO vhosts.certs (uid, subject, cn, san, valid_from, valid_until, chain, cert, `key`) VALUES (:uid, :subject, :cn, :san, :valid_from, :valid_until, :chain, :cert, :key)",
|
|
| 227 |
+ array(":uid" => $uid, ":subject" => filter_input_general($info['subject']), ":cn" => filter_input_general($info['cn']), ":san" => $info['san'], ":valid_from" => $info['valid_from'],
|
|
| 216 | 228 |
":valid_until" => $info['valid_until'], ":chain" => get_chain($cert), ":cert" => $cert, ":key" => $key)); |
| 217 | 229 |
} |
| 218 | 230 |
|
| ... | ... |
@@ -226,6 +238,7 @@ function refresh_cert($id, $info, $cert, $key = NULL) |
| 226 | 238 |
$oldcert = cert_details($id); |
| 227 | 239 |
$args = array(":subject" => filter_input_general($info['subject']),
|
| 228 | 240 |
":cn" => filter_input_general($info['cn']), |
| 241 |
+ ":san" => $san, |
|
| 229 | 242 |
":cert" => $cert, |
| 230 | 243 |
":valid_from" => $info['valid_from'], |
| 231 | 244 |
":valid_until" => $info['valid_until'], |
| ... | ... |
@@ -238,7 +251,7 @@ function refresh_cert($id, $info, $cert, $key = NULL) |
| 238 | 251 |
$keyop = ", `key`=:key"; |
| 239 | 252 |
$args[":key"] = $key; |
| 240 | 253 |
} |
| 241 |
- db_query("UPDATE vhosts.certs SET subject=:subject, cn=:cn, cert=:cert{$keyop}, valid_from=:valid_from, valid_until=:valid_until, chain=:chain WHERE id=:id", $args);
|
|
| 254 |
+ db_query("UPDATE vhosts.certs SET subject=:subject, cn=:cn, san=:san, cert=:cert{$keyop}, valid_from=:valid_from, valid_until=:valid_until, chain=:chain WHERE id=:id", $args);
|
|
| 242 | 255 |
} |
| 243 | 256 |
|
| 244 | 257 |
|
| ... | ... |
@@ -349,13 +362,14 @@ function save_csr($cn, $bits, $replace=NULL) |
| 349 | 362 |
} |
| 350 | 363 |
$domains = split_cn($cn); |
| 351 | 364 |
$cn = $domains[0]; |
| 365 |
+ $san = implode("\n", $domains);
|
|
| 352 | 366 |
$csr = NULL; |
| 353 | 367 |
$key = NULL; |
| 354 | 368 |
list($csr, $key) = create_csr(implode(',',$domains), $bits);
|
| 355 | 369 |
|
| 356 | 370 |
$uid = (int) $_SESSION['userinfo']['uid']; |
| 357 |
- db_query("INSERT INTO vhosts.csr (uid, hostname, bits, `replace`, csr, `key`) VALUES (:uid, :cn, :bits, :replace, :csr, :key)",
|
|
| 358 |
- array(":uid" => $uid, ":cn" => $cn, ":bits" => $bits,
|
|
| 371 |
+ db_query("INSERT INTO vhosts.csr (uid, hostname, san, bits, `replace`, csr, `key`) VALUES (:uid, :cn, :san, :bits, :replace, :csr, :key)",
|
|
| 372 |
+ array(":uid" => $uid, ":cn" => $cn, ":san" => $san, ":bits" => $bits,
|
|
| 359 | 373 |
":replace" => $replace, ":csr" => $csr, ":key" => $key)); |
| 360 | 374 |
$id = db_insert_id(); |
| 361 | 375 |
return $id; |
| 362 | 376 |