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:
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
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:
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:
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:
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.
instance = $1;
if (instance ~= "^(.*)s-s[T:[a-zA-Z0-9]+]$")
{
return %(true, instance, $1);
}
return true;
ka tātari i te Kupumatua:
A ki te whakaatu kua tātarihia, i runga i te ripa Whanui i te mara Whakaahuatanga, huri CertificateExpireDate: {instance} ki TiwhiketeWhakaotiRa: {instance-name}:
Koia, ka mutu ko te rarangi mutunga mai i KDPV:
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:
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:
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:
Katoa enei %m, %S, etc. — tonotono hei whakakapi i nga uara mai i ta maatau tawhā. Ka whakaahuahia i roto i nga korero taipitopito
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:
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:
me tenei panui imeera:
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