Получение Apache вытянуть “Высокий звук сертификата подвергает имя”

Техническая поддержка является одним очевидным ответом. Однако состояние проекта и другой совместный материал могут извлечь выгоду из IRC - любой экземпляр, где это может сократить бесполезные встречи, хорошее использование IRC, по моему скромному мнению.

2
задан 29 July 2009 в 16:55
3 ответа

PEM-закодированный сертификат доступен Вашему приложению PHP в переменной среды

$SSL_CLIENT_CERT

Можно использовать PHP openssl функции для парсинга этого, которое дает Вам, поддерживают ассоциативный массив ключей сертификата и значений. Я предполагаю, что один из тех будет Вашим именем высокого звука.

http://uk3.php.net/manual/en/function.openssl-x509-parse.php

Это потребует модификаций к Вашему приложению PHP, но это не ужасно:

  • проверьте на существование переменной среды
  • декодируйте сертификат
  • проверьте на существование ключевого имени высокого звука представления
  • присвойте значение, связанное с тем ключом к некоторой другой переменной, которую может использовать остальная часть Вашего приложения

Мог легко быть упакован в функцию, которую Вы могли включать в несколько приложений, я буду думать.

3
ответ дан 3 December 2019 в 10:28
  • 1
    +1; Это - единственный метод I' m знающий. Но знайте это you' потребность ll SSLOptions +ExportCertData и что это всегда будет медленнее, чем наличие Apache, дает Вам переменные. I' d рекомендуют использовать содержание DN если вообще возможный. –  Dan Carley 29 July 2009 в 18:51
  • 2
    Как раз то, что мне было нужно. –  user7944 29 July 2009 в 19:00

Используйте var_dump ($ _ENV) и ищите переменные, запускающиеся с SSL_

Кроме того, проверьте SSLOptions из руководства апача. StdEnvVars и ExportCertData выглядят хорошими. Если первое не поможет, то возможно, необходимо будет проанализировать данные сертификата, переданные ExportCertData

0
ответ дан 3 December 2019 в 10:28

Это взяло меня некоторое время для разработки этого, и информация справедливо рассеивается, таким образом, вот то, как я сделал это...

Сначала удостоверьтесь, что Ваш Apache имеет следующий набор:

SSLOptions +ExportCertData

иначе $ _SERVER ["SSL_CLIENT_CERT"] будет пробелом.

После того как Вы проверили, что $ _SERVER ["SSL_CLIENT_CERT"] имеет содержание, затем используйте:

$clicertarray = openssl_x509_parse($_SERVER["SSL_CLIENT_CERT"]);

для парсинга сертификата в массив затем Вы сможете вытянуть подчиненное альтернативное имя с:

$clicertarray["extensions"]["subjectAltName"];

1
ответ дан 3 December 2019 в 10:28

Теги

Похожие вопросы