Провера ваљаности ПоверСхелл-а и обавештење о истеку ССЛ сертификата

Неочекивани истек сертификата сервера може да изазове бројне непријатне последице за ваше клијенте: немогућност успостављања сигурне везе, грешке у аутентификацији, неугодна упозорења у прегледачу итд. У овом ћемо чланку показати како помоћу ПоверСхелл-а провјерити истек ССЛ / ТЛС цертификата на удаљеним локацијама, као и истека цертификата у цертификатима на серверима и рачунарима домена.

Садржај:

  • Вриједности ССЛ цертификата на веб локацијама помоћу ПоверСхелл-а
  • Потражите истекле цертификате у Виндовс продавници цертификата

Вриједности ССЛ цертификата на веб локацијама помоћу ПоверСхелл-а

Недавно је страница хттпс://винитпро.ру/ пребачена у ХТТПС протокол коришћењем бесплатног ССЛ сертификата из Хајде да шифрирамо. Посебност ових сертификата је та што се издају на период од 90 дана, након чега их је потребно ажурирати (обновити). Обнављање цертификата Лет Енцрипт обично се врши помоћу посебних скрипти или ботова на страни хостинга или сервера (на Виндовс-у то може бити ВАЦС, на Линук Цертбот-у). Али понекад аутоматизација може пропасти. Желео бих да имам сопствени систем верификације и обавештења о истеку ССЛ сертификата на веб локацијама. Имплементирао сам га на ПоверСхеллу. Јер верификујемо сертификат за веб локацију путем ХттпВеб захтева, нису вам потребна администраторска права на удаљеној веб локацији / серверу.

У следећој ПоверСхелл скрипти требате навести листу веб локација на којима желите да проверите рок важења сертификата, као и колико дана пре истека сертификата да бисте почели да приказују обавештења ($ минЦертАге). Као пример навео сам 80 дана.

$ минЦертАге = 80
$ тимеоутМс = 10000
$ ситес = @ (
"хттпс://винитпро.ру",
"хттпс://сите1.цом/",
"хттпс://сите2.ру/"
)
# Онемогући потврду сертификата
[Нет.СервицеПоинтМанагер] :: СерверЦертифицатеВалидатионЦаллбацк = $ труе
фореацх ($ сајт у $ сајтовима)

Врите-Хост Цхецк $ сите -ф Греен
$ рек = [Нет.ХттпВебРекуест] :: Креирај ($ сајт)
$ рек.Тимеоут = $ тимеоутМ
покушајте $ рек.ГетРеспонсе () | Оут-Нулл ухватити Врите-Хост УРЛ валидатион еррор $ сите ': $ _ -ф Ред
[датетиме] $ цертЕкпДате = $ рек.СервицеПоинт.Цертифицате.ГетЕкпиратионДатеСтринг ()
[инт] $ цертЕкпиресИн = ($ цертЕкпДате - $ (датум-датум)). Дани
$ цертНаме = $ рек.СервицеПоинт.Цертифицате.ГетНаме ()
$ цертТхумбпринт = $ рек.СервицеПоинт.Цертифицате.ГетЦертХасхСтринг ()
$ цертЕффецтивеДате = $ рек.СервицеПоинт.Цертифицате.ГетЕффецтивеДатеСтринг ()
$ цертИссуер = $ рек.СервицеПоинт.Цертифицате.ГетИссуерНаме ()
иф ($ цертЕкпиресИн -гт $ минЦертАге)
Сертификат Врите-Хост за $ сајт истјече за $ цертЕкпиресИн даис [$ цертЕкпДате] -ф Греен
друго

$ мессаге = "Сертификат за сајт $ сајт ће истећи за $ цертЕкпиресИн дана"
$ мессагетитле = "Обнови потврду"
$ Мессаге за писање [$ цертЕкпДате]. Детаљи: 'н'нЦерт име: $ цертНаме'Церт тхумбпринт: $ цертТхумбпринт'нЦерт ефективни датум: $ цертЕффецтивеДате'нЦерт издавач: $ цертИссуер -ф Ред
# прикажите скочно обавештење и пошаљите писмо администратору
#СховНотифицатион $ мессагетитле $ мессаге
# Сенд-МаилМессаге -Од поверсхелл@винитпро.ру -То админ@винитпро.ру -Субјецт $ мессагетитле -боди $ мессаге -СмтпСервер смтп.винитпро.ру -Енцодинг УТФ8

врите-хост "________________" 'н

Ова скрипта ПоверСхелл ће проверити ССЛ сертификате за све локације са листе. Ако се нађе сертификат који ускоро истиче, биће истакнут упозорењем.

Да бисте обавестили администратора о надолазећем истеку ССЛ сертификата, можете да додате скочно обавештење. Да бисте то учинили, коментирајте линију СховНотифицатион $ мессагетитле $ мессаге и додајте функцију:

Функција СховНотифицатион ($ МсгТитле, $ МсгТект)
Адд-Типе -АссемблиНаме Систем.Виндовс.Формс
$ глобал: балмсг = Систем нових система.Виндовс.Формс.НотифиИцон
$ патх = (Гет-Процесс -ид $ пид). Пут
$ балмсг.Ицон = [Систем.Дравинг.Ицон] :: ЕктрацтАссоциатедИцон ($ патх)
$ балмсг.БаллоонТипИцон = [Систем.Виндовс.Формс.ТоолТипИцон] :: Упозорење
$ балмсг.БаллоонТипТект = $ МсгТект
$ балмсг.БаллоонТипТитле = $ МсгТитле
$ балмсг.Висибле = $ труе
$ балмсг.СховБаллоонТип (10000)

Такође можете да додате упозорења путем е-поште користећи Сенд-МаилМессаге..

Као резултат, ако се открију истекли или истекли сертификати, бићете обавештени путем писма и искачуће поруке.

Остаје да креирате задатак аутоматског планирања који би требало да се извршава 1-2 пута недељно и покрените ПоверСхелл скрипту за проверу периода валидности ХТТПС сертификата веб локације (можете да креирате задатак планирања за покретање ПС1 датотеке коришћењем Регистер-СцхедуледТаск).

Потражите истекле цертификате у Виндовс продавници цертификата

Можда ће вам требати и скрипта која ће надгледати рок важења сертификата који се користе за криптографске услуге на серверима (на пример, сертификати на РДС, Екцханге, СхареПоинт, ЛДАПС, итд.) Или корисничких рачунара.

На локалном рачунару можете добити листу сертификата који ће ускоро истећи помоћу команде Гет-ЦхилдИтем-Поткрепљивање. Поверсхелл 3.0 има посебан аргумент -ЕкпирингИнДаис:

Гет-ЦхилдИтем -Петер церт: -Рецурсе -ЕкпирингИнДаис 30

У ПоверСхелл 2.0 слична наредба изгледа овако:

Гет-ЦхилдИтем -Пред церт: -Рецурсе | где $ _. нотафтер -ле (гет-дате) .АддДаис (30) -АНД $ _. нотафтер -гт (гет-дате) | одаберите отисак прста, предмет

Да бисте проверили само своје сертификате, користите контејнер Церт: \ ЛоцалМацхине \ Ми уместо корена Церт:. На овај начин нећете проверити Виндовс роот цертификате и комерцијалне сертификате.

Да бисте пронашли сертификате који истичу у наредних 30 дана на свим серверима у домену, можете да користите следећу скрипту ПоверСхелл:

$ сервери = (гет-адцомпутер -ЛДАПФилтер "(& (објецтЦатегори = рачунар) (оперативни систем = Виндовс Сервер *) (! сервицепринципалнаме = * МСЦлустерВиртуалСервер *) (! (усерАццоунтЦонтрол: 1.2.840.113556.1.4.803: = 2)))) "). Име
$ резултат = @ ()
фореацх ($ сервер у $ серверима)

$ ЕррорАцтионПреференце = "СилентлиЦонтинуе"
$ гетцерт = Инвоке-Цомманд -ЦомпутерНаме $ сервер Гет-ЦхилдИтем -Патх Церт: \ ЛоцалМацхине \ Ми -Рецурсе -ЕкпирингИнДаис 30
фореацх ($ церт у $ гетцерт)
$ ресулт + = Нев-Објецт -ТипеНаме ПСОбјецт -Проперти ([наручено] @
'Сервер' = $ сервер;
'Цертификат' = $ церт.Иссуер;
'Истече' = $ церт.НотАфтер
)


Резултат писања и исписа

Тако ћете добити листу цертификата који истекну на серверима и имаћете довољно времена да их обновите.