From a1148f3309b06b4e1d82b9e25a8173054fd03da7 Mon Sep 17 00:00:00 2001 From: Yonas Habteab Date: Thu, 31 Aug 2023 17:13:23 +0200 Subject: [PATCH] CertificateUtils: Split also unknow cert alt names correctly --- library/X509/CertificateUtils.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/library/X509/CertificateUtils.php b/library/X509/CertificateUtils.php index 7be7c9a0..e524024e 100644 --- a/library/X509/CertificateUtils.php +++ b/library/X509/CertificateUtils.php @@ -161,11 +161,16 @@ public static function splitSANs(?string $sanStr): array { $sans = []; foreach (Str::trimSplit($sanStr) as $altName) { - [$k, $v] = Str::trimSplit($altName, ':'); + if (strpos($altName, ':') === false) { + [$k, $v] = Str::trimSplit($altName, '=', 2); + } else { + [$k, $v] = Str::trimSplit($altName, ':', 2); + } + $sans[$k][] = $v; } - $order = array_flip(['DNS', 'URI', 'IP Address', 'email']); + $order = array_flip(['DNS', 'URI', 'IP Address', 'email', 'DirName']); uksort($sans, function ($a, $b) use ($order) { return ($order[$a] ?? PHP_INT_MAX) <=> ($order[$b] ?? PHP_INT_MAX); });