Skip to content
Snippets Groups Projects
Commit 33d4fba7 authored by Erick Hitter's avatar Erick Hitter
Browse files

Cleanup

parent 24e56a88
Branches
No related tags found
No related merge requests found
<?php <?php
/**
* Report certificate details.
*
* @package PHP_Cert_Reporter
*/
require __DIR__ . '/vendor/autoload.php'; namespace PHP_Cert_Reporter;
$data = [ /**
[ * Load table renderer.
'Filename', */
'CN', require_once __DIR__ . '/vendor/autoload.php';
'Expires',
'Days Left',
'SAN',
],
];
foreach ( glob( '*.crt', GLOB_NOSORT ) as $cert ) {
$path = getcwd() . '/' . $cert;
$x509 = openssl_x509_parse( file_get_contents( $path ) );
if ( ! is_array( $x509 ) ) {
printf( 'Failed to parse certificate from `%1$s`%2$s', $path, "\n\n" );
continue;
}
$cert_data = [ /**
0 => $cert, * Display certificate details in a table.
1 => $x509['subject']['CN'], *
2 => date( 'Y-m-d H:i:s T', $x509['validTo_time_t'] ), * Suitable for use in CI.
3 => (int) round( ( $x509['validTo_time_t'] - time() ) / 86400 ), *
4 => '', * @param bool $exit Exit with status code indicating if expired certificates were found.
*/
function report( $exit = true ): void {
$data = [
[
'Filename',
'CN',
'Expires',
'Days Left',
'SAN',
],
]; ];
if ( isset( $x509['extensions']['subjectAltName'] ) ) { $dir_includes_expired = false;
$sans = explode( ',', $x509['extensions']['subjectAltName'] );
printf( 'RESULTS FOR `%1$s`%2$s', getcwd(), "\n" );
foreach ( glob( '*.crt', GLOB_NOSORT ) as $cert ) {
$path = getcwd() . '/' . $cert;
$x509 = openssl_x509_parse( file_get_contents( $path ) );
if ( ! is_array( $x509 ) ) {
printf( 'Failed to parse certificate from `%1$s`%2$s', $path, "\n\n" );
continue;
}
$cert_data = [
0 => $cert,
1 => $x509['subject']['CN'],
2 => date( 'Y-m-d H:i:s T', $x509['validTo_time_t'] ),
3 => (int) round( ( $x509['validTo_time_t'] - time() ) / 86400 ),
4 => '',
];
foreach ( $sans as $i => $san ) { if ( ! $dir_includes_expired && $cert_data[3] <= 0 ) {
$san = explode( ':', $san ); $dir_includes_expired;
$sans[ $i ] = array_pop( $san );
} }
$cert_data[4] = implode( ' ', $sans ); if ( isset( $x509['extensions']['subjectAltName'] ) ) {
$sans = explode( ',', $x509['extensions']['subjectAltName'] );
foreach ( $sans as $i => $san ) {
$san = explode( ':', $san );
$sans[ $i ] = array_pop( $san );
}
$cert_data[4] = implode( ' ', $sans );
}
$data[] = $cert_data;
} }
$data[] = $cert_data; $table = new \cli\Table( array_shift( $data ), $data );
} $table->sort( 2 );
$table->display();
$table = new \cli\Table( array_shift( $data ), $data ); if ( $exit ) {
$table->sort( 2 ); exit( $dir_includes_expired ? 1 : 0 );
$table->display(); }
}
report();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment