diff options
-rw-r--r-- | etc/inc/certs.inc | 11 | ||||
-rw-r--r-- | usr/local/www/system_certmanager.php | 8 |
2 files changed, 19 insertions, 0 deletions
diff --git a/etc/inc/certs.inc b/etc/inc/certs.inc index 50ce0ad..ec3227d 100644 --- a/etc/inc/certs.inc +++ b/etc/inc/certs.inc @@ -458,6 +458,17 @@ function cert_get_modulus($str_crt, $decode = true, $type = "crt"){ function csr_get_modulus($str_crt, $decode = true){ return cert_get_modulus($str_crt, $decode, "csr"); } + +function cert_get_purpose($str_crt, $decode = true) { + if ($decode) + $str_crt = base64_decode($str_crt); + $crt_details = openssl_x509_parse($str_crt); + $purpose = array(); + $purpose['ca'] = (stristr($crt_details['extensions']['basicConstraints'], 'CA:TRUE') === false) ? 'No': 'Yes'; + $purpose['server'] = ($crt_details['extensions']['nsCertType'] == "SSL Server") ? 'Yes': 'No'; + return $purpose; +} + function prv_get_modulus($str_crt, $decode = true){ return cert_get_modulus($str_crt, $decode, "prv"); } diff --git a/usr/local/www/system_certmanager.php b/usr/local/www/system_certmanager.php index 54e9b8d..06a7a59 100644 --- a/usr/local/www/system_certmanager.php +++ b/usr/local/www/system_certmanager.php @@ -887,6 +887,7 @@ function internalca_change() { if ($cert['crt']) { $subj = cert_get_subject($cert['crt']); $issuer = cert_get_issuer($cert['crt']); + $purpose = cert_get_purpose($cert['crt']); if($subj==$issuer) $caname = "<em>" . gettext("self-signed") . "</em>"; else @@ -919,9 +920,16 @@ function internalca_change() { <?=$name;?> </td> </tr> + <tr><td> </td></tr> <?php if ($cert['type']): ?> <tr><td colspan="2"><em><?php echo $cert_types[$cert['type']]; ?></em></td></tr> <?php endif; ?> + <?php if (is_array($purpose)): ?> + <tr><td colspan="2"> + CA: <?php echo $purpose['ca']; ?>, + Server: <?php echo $purpose['server']; ?> + </td></tr> + <?php endif; ?> </table> </td> <td class="listr"><?=$caname;?> </td> |