Computer >> कंप्यूटर >  >> प्रणाली >> Windows Server

पावरशेल के साथ एसएसएल/टीएलएस प्रमाणपत्र समाप्ति तिथि की जांच कर रहा है

सर्वर प्रमाणपत्र की अप्रत्याशित समाप्ति आपके उपयोगकर्ताओं और ग्राहकों के लिए कई समस्याएं पैदा कर सकती है:वे आपकी साइट के साथ एक सुरक्षित कनेक्शन स्थापित करने में सक्षम नहीं हो सकते हैं, प्रमाणीकरण त्रुटियां हो सकती हैं, ब्राउज़र में कष्टप्रद सूचनाएं दिखाई दे सकती हैं, आदि। इसमें लेख हम दिखाएंगे कि दूरस्थ साइटों पर SSL/TLS प्रमाणपत्र की समाप्ति तिथि की जांच कैसे करें, या अपने डोमेन में सर्वर या कंप्यूटर पर स्थानीय प्रमाणपत्र स्टोर में समाप्त होने वाले प्रमाणपत्रों की सूची प्राप्त करें।

PowerShell के साथ वेबसाइट SSL प्रमाणपत्र की समाप्ति तिथि प्राप्त करें

कई वेब प्रोजेक्ट HTTPS को लागू करने के लिए लेट्स एनक्रिप्टेड एसएसएल प्रमाणपत्रों का उपयोग करते हैं। ये प्रमाणपत्र 90 . के लिए समस्याएं हैं दिन और नियमित रूप से नवीनीकृत किया जाना चाहिए। आमतौर पर, विशेष स्क्रिप्ट या बॉट लेट्स एनक्रिप्ट सर्टिफिकेट को होस्टिंग या सर्वर साइड पर अपडेट करते हैं (यह विंडोज़ में डब्ल्यूएसीएस या लिनक्स में सर्टबॉट हो सकता है)। हालाँकि, कभी-कभी स्वचालित प्रमाणपत्र नवीनीकरण विफल हो जाता है। मैं अपनी खुद की स्क्रिप्ट चाहता हूं जो वेबसाइटों पर एसएसएल प्रमाणपत्र समाप्ति तिथियों की जांच करे और जब वे समाप्त होने वाले हों तो मुझे सूचित करें। मैंने इसे बनाने के लिए पावरशेल का इस्तेमाल किया। चूंकि हम HttpWeb क्वेरी के माध्यम से किसी वेबसाइट के प्रमाणपत्र की जांच कर रहे हैं, इसलिए हमें किसी दूरस्थ वेबसाइट/सर्वर पर व्यवस्थापकीय विशेषाधिकारों की आवश्यकता नहीं है।

निम्नलिखित पावरशेल स्क्रिप्ट में, आपको उस वेबसाइट की सूची निर्दिष्ट करनी होगी, जिस पर आप प्रमाणपत्र की समाप्ति तिथियों की जांच करना चाहते हैं और जब संबंधित अधिसूचना आपको प्रदर्शित होने लगे तो प्रमाणपत्र की आयु ($minCertAge) ) उदाहरण के तौर पर मैंने 80 दिन दर्ज किए।

$minCertAge = 80
$timeoutMs = 10000
$sites = @(
"https://testsite1.com/",
"https://testsite2.com/",
"https://woshub.com/"
)
# Disable certificate validation
[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
foreach ($site in $sites)
{
Write-Host Check $site -f Green
$req = [Net.HttpWebRequest]::Create($site)
$req.Timeout = $timeoutMs
try {$req.GetResponse() |Out-Null} catch {Write-Host URL check error $site`: $_ -f Red}
$expDate = $req.ServicePoint.Certificate.GetExpirationDateString()
$certExpDate = [datetime]::ParseExact($expDate, “dd/MM/yyyy HH:mm:ss”, $null)
[int]$certExpiresIn = ($certExpDate - $(get-date)).Days
$certName = $req.ServicePoint.Certificate.GetName()
$certThumbprint = $req.ServicePoint.Certificate.GetCertHashString()
$certEffectiveDate = $req.ServicePoint.Certificate.GetEffectiveDateString()
$certIssuer = $req.ServicePoint.Certificate.GetIssuerName()
if ($certExpiresIn -gt $minCertAge)
{Write-Host The $site certificate expires in $certExpiresIn days [$certExpDate] -f Green}
else
{
$message= "The $site certificate expires in $certExpiresIn days"
$messagetitle= "Renew certificate"
Write-Host $message [$certExpDate]. Details:`n`nCert name: $certName`Cert thumbprint: $certThumbprint`nCert effective date: $certEffectiveDate`nCert issuer: $certIssuer -f Red
#Displays a pop-up notification and sends an email to the administrator
#ShowNotification $messagetitle $message
# Send-MailMessage -From powershell@woshub.com -To admin@woshub.com -Subject $messagetitle -body $message -SmtpServer gwsmtp.woshub.com -Encoding UTF8
}
write-host "________________" `n
}

यह पावरशेल स्क्रिप्ट सूची में सभी वेबसाइटों के एसएसएल प्रमाणपत्रों की जांच करेगी। यदि कोई प्रमाणपत्र मिलता है जो समाप्त होने वाला है, तो उसे अधिसूचना में हाइलाइट किया जाएगा।

पावरशेल के साथ एसएसएल/टीएलएस प्रमाणपत्र समाप्ति तिथि की जांच कर रहा है

किसी व्यवस्थापक को यह सूचित करने के लिए कि SSL प्रमाणपत्र समाप्त होने वाला है, आप एक पॉपअप सूचना जोड़ सकते हैं। ऐसा करने के लिए, स्क्रिप्ट लाइन को अनकम्मेंट करें “ShowNotification $messagetitle $message ” और निम्नलिखित फ़ंक्शन जोड़ें:

Function ShowNotification ($MsgTitle, $MsgText) {
Add-Type -AssemblyName System.Windows.Forms
$global:balmsg = New-Object System.Windows.Forms.NotifyIcon
$path = (Get-Process -id $pid).Path
$balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning
$balmsg.BalloonTipText = $MsgText
$balmsg.BalloonTipTitle = $MsgTitle
$balmsg.Visible = $true
$balmsg.ShowBalloonTip(10000)
}

आप Send-MailMessage . का उपयोग करके एक ईमेल सूचना भी भेज सकते हैं ।

फिर यदि कोई समय सीमा समाप्त या समाप्त होने वाले प्रमाणपत्र मिलते हैं, तो आपको एक ईमेल और एक पॉपअप संदेश द्वारा सूचित किया जाएगा।

पावरशेल के साथ एसएसएल/टीएलएस प्रमाणपत्र समाप्ति तिथि की जांच कर रहा है

फिर टास्क शेड्यूलर को सप्ताह में एक या दो बार चलाने के लिए एक स्वचालित कार्य बनाएं और अपने HTTPS वेबसाइट प्रमाणपत्रों की समाप्ति तिथियों की जांच करने के लिए पावरशेल स्क्रिप्ट चलाएं। (आप रजिस्टर-शेड्यूल्ड टास्क cmdlet का उपयोग करके PS1 स्क्रिप्ट फ़ाइल चलाने के लिए टास्क शेड्यूलर में एक टास्क बना सकते हैं।)

Windows प्रमाणपत्र स्टोर में समाप्त प्रमाणपत्रों की दूरस्थ रूप से जांच कैसे करें?

आपको अपने डोमेन सर्वर (उदा., RDP/RDS , Exchange, SharePoint, LDAPS प्रमाणपत्र, आदि) या उपयोगकर्ताओं के कंप्यूटरों पर क्रिप्टोग्राफ़िक सेवाओं द्वारा उपयोग किए जाने वाले प्रमाणपत्रों की समाप्ति तिथियों की जांच करने के लिए PowerShell स्क्रिप्ट की भी आवश्यकता हो सकती है।

स्थानीय कंप्यूटर पर, आप कमांड का उपयोग करके प्रमाणपत्रों की सूची प्राप्त कर सकते हैं:

Get-ChildItem -Path cert

Powershell 3.0 में एक विशेष -ExpiringInDays . है तर्क:

Get-ChildItem -Path cert: -Recurse -ExpiringInDays 30

पावरशेल 2.0 में, वही कमांड इस तरह दिखता है:

Get-ChildItem -Path cert: -Recurse | where { $_.notafter -le (get-date).AddDays(30) -AND $_.notafter -gt (get-date)} | select thumbprint, subject

केवल अपने प्रमाणपत्रों की जांच करने के लिए, Cert:\LocalMachine\My . का उपयोग करें Cert: . के बजाय कंटेनर रूट फ़ोल्डर में। इस प्रकार, आपने Windows विश्वसनीय रूट प्रमाणपत्र और वाणिज्यिक प्रमाणपत्रों की जांच नहीं की।

सभी डोमेन सर्वर पर अगले 30 दिनों में समाप्त होने वाले प्रमाणपत्रों को खोजने के लिए, इस पॉवरशेल स्क्रिप्ट का उपयोग करें:

$servers= (Get-ADComputer -LDAPFilter "(&(objectCategory=computer)(operatingSystem=Windows Server*) (!serviceprincipalname=*MSClusterVirtualServer*) (!(userAccountControl:1.2.840.113556.1.4.803:=2)))").Name
$result=@()
foreach ($server in $servers)
{
$ErrorActionPreference="SilentlyContinue"
$getcert=Invoke-Command -ComputerName $server { Get-ChildItem -Path Cert:\LocalMachine\My -Recurse -ExpiringInDays 30}
foreach ($cert in $getcert) {
$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Server'=$server;
'Certificate'=$cert.Issuer;
'Expires'=$cert.NotAfter
})
}
}
Write-Output $result

पावरशेल के साथ एसएसएल/टीएलएस प्रमाणपत्र समाप्ति तिथि की जांच कर रहा है

आपको सर्वर प्रमाणपत्रों की सूची मिल जाएगी जो समाप्त होने वाले हैं और आपके पास उन्हें नवीनीकृत करने के लिए पर्याप्त समय होगा।


  1. पावरशेल के साथ विंडोज़ पर सक्रिय टीसीपी/आईपी कनेक्शन की जांच करना

    कई व्यवस्थापक आमतौर पर netstat . का उपयोग करते हैं कंसोल टूल या ग्राफिक TCPView सक्रिय टीसीपी/आईपी कनेक्शन के बारे में जानकारी प्रदर्शित करने और विंडोज़ में टीसीपी पोर्ट खोलने के लिए। नेटस्टैट के बजाय, आप Get-NetTCPConnection . का उपयोग कर सकते हैं Windows में सक्रिय नेटवर्क कनेक्शन, खुले TCP पोर्ट

  1. जावास्क्रिप्ट के साथ एक चेकबॉक्स की जाँच करना

    मान लें कि निम्नलिखित हमारे इनपुट प्रकार के चेकबॉक्स हैं - <lable>John</lable> <input id="checkedValue1" type="checkbox"> <lable>David</lable> <input id="checkedValue2" type="checkbox"> हम किसी भी चेकबॉक्स को चेक करना चाहते

  1. समाधान:इस वेबसाइट के सुरक्षा प्रमाणपत्र में कोई समस्या है

    कुछ विंडोज़ उपयोगकर्ताओं को एक अजीब समस्या का सामना करना पड़ रहा है जहां उन्हें लगातार HTTPS प्रमाणपत्र त्रुटियां मिलती हैं जैसे इस वेबसाइट के सुरक्षा प्रमाणपत्र में कोई समस्या है ट्विटर, गूगल, फेसबुक, आदि जैसी हाई-प्रोफाइल साइटों और ऐप्स तक पहुंचने का प्रयास करते समय त्रुटि। ज्यादातर मामलों में, प्