گواهینامه های SSL بخش بسیار مهمی از وب سایت هستند. آنها با فعال کردن یک اتصال امن HTTPS، نقشی کلیدی در تامین امنیت تبادل اطلاعات در سمت مشتری و سرور دارند. در مقاله زیر با PowerShell، تاریخ اعتبار گواهی (تاریخ شروع و انقضا) گواهی را با استفاده از PowerShell دریافت می کنیم.
برای رسیدن به این هدف، باید درخواست httpweb را انجام دهیم ، اما قبل از آن، هشدار SSL را با دستور زیر نادیده میگیریم.
[Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }
و سپس با فراخوانی یک کلاس Net درخواست وب HTTP را انجام می دهیم.
$url = "https://www.microsoft.com/" $req = [Net.HttpWebRequest]::Create($url)
هنگامی که $req را بررسی می کنیم ، ویژگی های کمی نمایش داده می شود، اما از آنجایی که ما به تاریخ گواهی علاقه مندیم، از ویژگی خاص ServicePoint برای بازیابی اطلاعات مرتبط استفاده می کنیم.
$req.ServicePoint
خروجی دستور بالا
PS C:WINDOWSsystem32> $req.ServicePoint BindIPEndPointDelegate : ConnectionLeaseTimeout : -1 Address : https://www.microsoft.com/ MaxIdleTime : 100000 UseNagleAlgorithm : True ReceiveBufferSize : -1 Expect100Continue : True IdleSince : 23-06-2020 07:02:36 ProtocolVersion : 1.1 ConnectionName : https ConnectionLimit : 2 CurrentConnections : 0 Certificate : ClientCertificate : SupportsPipelining : True
همانطور که در ویژگی بالا می بینید که فیلد گواهی خالی است، بنابراین برای بازیابی اطلاعات، باید از متد GetResponse() استفاده کنیم .
$req.GetResponse()
خروجی دستور بالا
IsMutuallyAuthenticated : False Cookies : {} Headers : {Pragma, X-Activity-Id, MS-CV, X-AppVersion...} SupportsHeaders : True ContentLength : -1 ContentEncoding : ContentType : text/html; charset=utf-8 CharacterSet : utf-8 Server : LastModified : 23-06-2020 07:06:44 StatusCode : OK StatusDescription : OK ProtocolVersion : 1.1 ResponseUri : https://www.microsoft.com/en-in/ Method : GET IsFromCache : False
اکنون دستور قبلی را اجرا می کنیم و بررسی می کنیم که آیا می توانیم اطلاعات گواهی را بازیابی کنیم یا خیر.
[Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } $url = "https://www.microsoft.com/" $req = [Net.HttpWebRequest]::Create($url) $req.GetResponse() | Out-Null $output = [PSCustomObject]@{ URL = $url 'Cert Start Date' = $req.ServicePoint.Certificate.GetEffectiveDateString() 'Cert End Date' = $req.ServicePoint.Certificate.GetExpirationDateString() } $output URL Cert Start Date Cert End Date --- --------------- ------------- https://www.microsoft.com/ 26-06-2019 09:10:38 22-10-2021 03:34:04