Я нашел код для получения сертификатов CA.Проблема в том, что скрипт имеет формат .sh:
wget -O - https://eidas.agid.gov.it/TL/TSL-IT.xml | perl -ne 'if (/<X509Certificate>/) {
s/^\s+//; s/\s+$//;
s/<\/*X509Certificate>//g;
print "-----BEGIN CERTIFICATE-----\n";
while (length($_)>64) {
print substr($_,0,64)."\n";
$_=substr($_,64);
}
print $_."\n";
print "-----END CERTIFICATE-----\n";
}' >CA.pem
Я хотел бы иметь его на PHP, но я не знаю, как он работает в .sh (я использую Windows, и я не могупросмотреть вывод в .sh), поэтому я не знаю, как начать преобразование: (
ОБНОВЛЕНИЕ: после некоторой попытки я достиг этой точки:
$xmlDoc = simplexml_load_file('https://eidas.agid.gov.it/TL/TSL-IT.xml');
$content = "";
foreach ($xmlDoc->SchemeInformation->PointersToOtherTSL->OtherTSLPointer->ServiceDigitalIdentities->ServiceDigitalIdentity as $key)
{
$content .= "-----BEGIN CERTIFICATE-----" . PHP_EOL;
$content .= wordwrap($key->DigitalId->X509Certificate, 64, PHP_EOL, true);
$content .= PHP_EOL;
$content .= "-----END CERTIFICATE-----" . PHP_EOL;
}
file_put_contents("test.txt",$content);
Проблема в том,что "X509Certificate" находится в других блоках внутри XML, поэтому я должен создать цикл для каждого блока. Есть ли способ извлечь значение только по элементу name = "X509Certificate" без знания правильной иерархии дерева?