Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

I mua tata nei i anga matou ki te mahi ki te aro turuki i te waa whaimana o nga tiwhikete i runga i nga tūmau Windows. Ana, me pehea taku whakatika i muri i te huri o nga tiwhikete ki te paukena he maha nga wa, i te wa ano ko te hoa mahi pahau te kawenga mo o raatau whakahoutanga i te hararei. I muri i tera, ka whakapaehia e maua ko tetahi mea ka whakatau ki te whakaaro mo taua mea. I te mea kei te tino whakatinanahia e matou te punaha aroturuki NetXMS, kua noho hei kaupapa matua, ko te tikanga, ko ia anake te kaitono mo tenei mahi.

I te mutunga ka whiwhi te hua i te ahua e whai ake nei:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

Na ka haere tonu te tukanga.

Haere. Karekau he porotiti i hangaia mo nga tiwhikete kua pau i roto i te NetXMS, na me hanga e koe taau ake me te whakamahi i nga tuhinga tuhi hei whakarato raraunga. Ae ra, kei runga Powershell, ko Windows tenei. Me panui te tuhinga i nga tiwhikete katoa i roto i te punaha whakahaere, tangohia te ra paunga i roto i nga ra mai i reira ka tukuna tenei nama ki NetXMS. Na tana kaihoko. Ko reira tatou ka timata.

Kōwhiringa kotahi, ngawari rawa atu. Me tiki noa te maha o nga ra tae noa ki te ra paunga o te tiwhikete me te ra tata.

Kia mohio ai te tūmau NetXMS mo te noho o ta tatou tawhā ritenga, me whiwhi mai i te kaihoko. Ki te kore, kaore e taea te taapiri i tenei tawhā na te mea kua ngaro. Na reira, i roto i te kōnae whirihoranga kaihoko nxagentd.conf ka taapirihia he aho tawhā waho e kiia nei HTTPS.CertificateExpireDateSimple, i reira ka rehitatia e matou te whakarewatanga o te tuhinga:

ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "servershareNetXMS_CertExpireDateSimple.ps1"

Whakaaro e whakarewahia te hōtuhi i runga i te whatunga, me mahara koe e pā ana ki Kaupapa Whakamate, a kaua hoki e wareware ki tetahi atu "-NoLogo -NoProfile -NonInteractive", i whakarerea e ahau mo te pai ake o te panui waehere.

Ko te mutunga, he penei te ahua o te whirihora kaihoko:

#
# NetXMS agent configuration file
# Created by agent installer at Thu Jun 13 11:24:43 2019
#
 
MasterServers = netxms.corp.testcompany.ru
ConfigIncludeDir = C:NetXMSetcnxagentd.conf.d
LogFile = {syslog}
FileStore = C:NetXMSvar
SubAgent = ecs.nsm
SubAgent = filemgr.nsm
SubAgent = ping.nsm
SubAgent = logwatch.nsm
SubAgent = portcheck.nsm
SubAgent = winperf.nsm
SubAgent = wmi.nsm
 
ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "servershareNetXMS_CertExpireDateSimple.ps1"

I muri i tenei, me tiaki e koe te whirihora me te whakaara ano i te kaihoko. Ka taea e koe tenei mai i te papatohu NetXMS: whakatuwhera i te whirihora (Whakatika i te konae whirihoranga a te kaihoko), whakatikahia, mahia Tiaki&Hoatu, na reira, ka pera ano. Na ka panui ano i te whirihoranga (Poll> Configuration), mena kaore koe i te kaha ki te tatari. Whai muri i enei mahi, ka taea e koe te taapiri i ta maatau tawhā ritenga.

I roto i te papatohu NetXMS haere ki Whirihoranga Kohinga Raraunga te tūmau whakamatautau e haere ana matou ki te aroturuki i nga tiwhikete me te hanga i tetahi tawhā hou ki reira (i te wa kei te heke mai, i muri i te whirihoranga, he mea tika ki te whakawhiti ki nga tauira). Tīpakohia te HTTPS.CertificateExpireDateSimple mai i te rarangi, whakauruhia he Whakaahuatanga me te ingoa marama, tautuhia te momo ki te Integer me te whirihora i te waahi pooti. Mo nga kaupapa patuiro, he mea tika kia poto ake, 30 hēkona, hei tauira. Kua rite nga mea katoa, kaati mo tenei wa.

Ka taea e koe te tirotiro ... kaore, he moata rawa. Inaianei, ko te tikanga, kaore matou e whiwhi i tetahi mea. Na te mea kaore ano kia tuhia te tuhinga. Kia whakatikahia tenei hapa. Ka whakaatu noa te tuhinga i tetahi tau, te maha o nga ra e toe ana kia pau te tiwhikete. Ko te iti rawa o nga mea katoa e waatea ana. Tauira tuhi:

try {
    # Получаем все сертификаты из хранилища сертификатов
    $lmCertificates = @( Get-ChildItem -Recurse -path 'Cert:LocalMachineMy' -ErrorAction Stop )
     
    # Если сертификатов нет, вернуть "10 лет"
    if ($lmCertificates.Count -eq 0) { return 3650 }
 
    # Получаем Expiration Date всех сертификатов
    $expirationDates = @( $lmCertificates | ForEach-Object { return $_.NotAfter } )
 
    # Получаем наиболее близкий Expiration Date из всех
    $minExpirationDate = ($expirationDates | Measure-Object -Minimum -ErrorAction Stop ).Minimum
 
    # Конвертируем наиболее близкий Expiration Date в количество оставшихся дней с округлением в меньшую сторону
    $daysLeft = [Math]::Floor( ($minExpirationDate - [DateTime]::Now).TotalDays )
 
    # Возвращаем значение
    return $daysLeft
}
catch {
    return -1
}

Ka puta penei:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

723 ra, tata ki te rua tau e toe ana kia pau te tiwhikete. He arorau, na te mea i tukuna ano e au nga tiwhikete mo te papa whakamatautau Exchange i nga wa tata nei.

He whiringa ngawari. Tena pea, ka ngata tetahi ki tenei, engari i pirangi matou. I whakaritea e matou te mahi ki te tiki rarangi o nga tiwhikete katoa i runga i te tūmau, ma te ingoa, ma ia tangata kia kite i te maha o nga ra e toe ana kia pau te tiwhikete.

Ko te kōwhiringa tuarua, ahua uaua ake.

Ka whakatika ano matou i te whirihora a te kaihoko me reira, hei utu mo te raina me ExternalParameter, ka tuhia e matou etahi atu e rua:

ExternalList = HTTPS.CertificateNames: powershell.exe -File "serversharenetxms_CertExternalNames.ps1"
ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -File "serversharenetxms_CertExternalParameter.ps1" -CertificateId "$1"

В Rarangiwaho ka whiwhi noa matou i te rarangi o nga aho. I roto i to maatau, he rarangi o nga aho me nga ingoa tiwhikete. Ka whiwhi matou i te rarangi o enei rarangi ma te whakamahi i te tuhinga. Ingoa rārangi - HTTPS.Nga Ingoa Tiwhikete.

Hōtuhi NetXMS_CertNames.ps1:

#Список возможных имен сертификатов
$nameTypeList = @(
        [System.Security.Cryptography.X509Certificates.X509NameType]::SimpleName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::DnsName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::DnsFromAlternativeName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::UrlName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::EmailName,
        [System.Security.Cryptography.X509Certificates.X509NameType]::UpnName
)
 
#Ищем все сертификаты, имеющие закрытый ключ
$certList = @( Get-ChildItem -Path 'Cert:LocalMachineMy' | Where-Object { $_.HasPrivateKey -eq $true } )
 
#Проходим по списку сертификатов, формируем строку "Имя сертификата - Дата - Thumbprint" и возвращаем её
foreach ($cert in $certList) {
    $name = '(unknown name)'
    try {
        $thumbprint = $cert.Thumbprint
        $dateExpire = $cert.NotAfter
        foreach ($nameType in $nameTypeList) {
            $name_temp = $cert.GetNameInfo( $nameType, $false)
            if ($name_temp -ne $null -and $name_temp -ne '') {
                $name = $name_temp;
                break;
            }
        }
        Write-Output "$($name) - $($dateExpire.ToString('dd.MM.yyyy')) - [T:$($thumbprint)]"
    }
    catch {
        Write-Error -Message "Error processing certificate list: $($_.Exception.Message)"
    }
}

Na kei roto Tawhāwaho Ka kuhu matou i nga rarangi mai i te rarangi Rarangiwaho, a, i te putanga ka whiwhi matou i te maha o nga ra mo ia. Ko te tohu tohu ko te Tohu Maama o te tiwhikete. Kia mahara kei roto i te HTTPS.CertificateExpireDate he whetūriki (*) i tenei momo rereke. He mea tika tenei kia whakaaehia e ia nga taurangi o waho, ko ta maatau CertificateId anake.

Hōtuhi NetXMS_CertExpireDate.ps1:

#Определяем входящий параметр $CertificateId
param (
    [Parameter(Mandatory=$false)]
    [String]$CertificateId
)
 
#Проверка на существование
if ($CertificateId -eq $null) {
    Write-Error -Message "CertificateID parameter is required!"
    return
}
 
#По Thumbprint из строки в $CertificateId ищем сертификат и определяем его Expiration Date 
$certId = $CertificateId;
try {
    if ($certId -match '^.*[T:(?<Thumbprint>[A-Z0-9]+)]$') {
        $thumbprint = $Matches['Thumbprint']
        $certificatePath = "Cert:LocalMachineMy$($thumbprint)"
         
        if (Test-Path -PathType Leaf -Path $certificatePath ) {
            $certificate = Get-Item -Path $certificatePath;
            $certificateExpirationDate = $certificate.NotAfter
            $certificateDayToLive = [Math]::Floor( ($certificateExpirationDate - [DateTime]::Now).TotalDays )
            Write-Output "$($certificateDayToLive)";
        }
        else {
            Write-Error -Message "No certificate matching this thumbprint found on this server $($certId)"
        }
    }
    else {
        Write-Error -Message "CertificateID provided in wrong format. Must be FriendlyName [T:<thumbprint>]"
    }
}
catch {
    Write-Error -Message "Error while executing script: $($_.Exception.Message)"
}

I roto i te Whirihoranga Kohinga Raraunga o te tūmau, ka hangaia he tawhā hōu. I roto i te Tawhā ka tohua e taatau HTTPS.CertificateExpireDate(*) mai i te rarangi, a (whakaaro!) huri i te whetūriki ki {tauira}. Ma tenei waahanga nui ka taea e koe te hanga i tetahi porotiti motuhake mo ia tauira (tiwhikete). Ko te toenga ka whakakiia penei i te putanga o mua:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

Ki te whai i tetahi mea hei hanga porotiti mai, i runga i te ripa Instance Discovery me kowhiria e koe te Rarangi Kaihoko mai i te rarangi me te rarangi Ingoa Ingoa whakauruhia te ingoa o to tatou Rarangiwaho mai i te tuhinga - HTTPS.CertificateNames.

Tata ki te reri, tatari mo te wa poto, ka kaha ranei te Pooti > Whirihoranga me te Pooti > Instance Discovery ki te kore e taea te tatari. Ko te mutunga, ka whiwhi matou i a matou tiwhikete katoa me nga waa whaimana:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

He aha e hiahia ana koe? Ae, ae, ko te kutukutu anake o te tino pai ka titiro ki tenei Tohu Koromatua koretake i runga i te ingoa o te porotiti me nga kanohi pouri, kaore au e tuku kia oti te tuhinga. Hei whangai i a ia, whakatuwheratia ano nga taonga porotiti ka runga i te ripa Discovery Instance, i roto i te mara "Whakatuwheratanga Whakakitenga Whakaaturanga", taapirihia te mea kua tuhia ki roto. NXSL (NetXMS reo roto) tuhi:

instance = $1;
 if (instance ~= "^(.*)s-s[T:[a-zA-Z0-9]+]$")
 {
 return %(true, instance, $1);
 }
 return true;

ka tātari i te Kupumatua:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

A ki te whakaatu kua tātarihia, i runga i te ripa Whanui i te mara Whakaahuatanga, huri CertificateExpireDate: {instance} ki TiwhiketeWhakaotiRa: {instance-name}:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

Koia, ka mutu ko te rarangi mutunga mai i KDPV:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

Ehara i te mea ataahua?

Ko nga mea e toe ana ko te whakarite matohi kia tae mai ma te imeera ina pau te tiwhikete.

1. Tuatahi me hanga he Tauira Takahanga hei whakahohe i te wa e heke iho ai te uara porotiti ki etahi paepae kua whakaritea e matou. IN Whirihoranga Takahanga kia hanga e rua nga tauira hou me nga ingoa penei CertificateExpireDate_Threshold_Activate me te tūnga Whakatūpato:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

me te rite CertificateExpireDate_Threshold_Deactivate me te tūnga Pūnoa.

2. Panuku, haere ki nga taonga porotiti ka tautuhi i te paepae ki te ripa Taonga:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

i reira ka tohua e matou o maatau kaupapa i hangaia ai CertificateExpireDate_Threshold_Activate me CertificateExpireDate_Threshold_Deactivate, tautuhia te maha o nga tauira (Tauira) ki te 1 (mo tenei porotiti kaore he take ki te whakarite i etahi atu), ko te uara he 30 (ra), hei tauira, a, ko te mea nui, kua whakaritea. te wa tukurua takahanga. Mo nga tiwhikete i roto i te mahi, ka whakaturia e ahau kotahi te ra (86400 hēkona), ki te kore ka taea e koe te totohu i roto i nga whakamohiotanga (e, na te ara, i puta kotahi, na te mea kua ki tonu te pouaka pouaka i nga wiki). Mo te wa patuiro, he mea tika ki te whakanoho ki raro, 60 hēkona, hei tauira.

3. In Whirihoranga Mahi hanga he tauira reta panui, penei:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

Katoa enei %m, %S, etc. — tonotono hei whakakapi i nga uara mai i ta maatau tawhā. Ka whakaahuahia i roto i nga korero taipitopito ā-ringa NetXMS.

4. Ka mutu, ko te whakakotahi i nga tohu o mua, ki roto Kaupapahere Tukatuka Takahanga hangahia he ture hei hanga i tetahi Alarm ka tukuna he reta:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

Ka tiakina e matou te kaupapa here, ka taea te whakamatautau i nga mea katoa. Me whakarite te paepae ki runga ake hei taki. Ka pau taku tiwhikete tata i roto i nga ra 723, ka tohua e ahau ki te 724 hei tirotiro. Ko te mutunga, ka whiwhi matou i te whakaoho e whai ake nei:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

me tenei panui imeera:

Te aro turuki i te ra paunga o te tiwhikete i Windows i runga i NetXMS

Ko te mea pono inaianei. Ko te tikanga, ka taea te whakatu i tetahi papatohu me te hanga kauwhata, engari mo nga tiwhikete he ahua kore, he hoha nga raina tika, kaore i rite ki nga kauwhata o te tukatuka, te uta mahara ranei, hei tauira. Engari, he nui ake mo tenei i etahi atu wa.

Source: will.com

Tāpiri i te kōrero