100以上のサイトがあるIIS6 Webサーバーがあります。最近、私は、CSRリクエストを更新するのではなく、新しいCSRリクエストを作成することにより、すべてのサイトが使用するワイルドカードSSL証明書を更新することを余儀なくされました。証明書をインストールし、各サイトを1つずつ更新して新しい証明書を使用できますが、次のことを考えていました。
興味のある人のための2番目の項目の答えがあります。以下の内容のテキストファイルを作成し、.vbs
拡張子で保存します。次に、コマンドラインからcscript myfile.vbs
で実行します。 cscript myfile.vbs > output.txt
として実行すると、結果がテキストファイルに書き込まれます。
strComputer = "localhost"
Set objService = GetObject( "IIS://" & strComputer & "/W3SVC")
EnumServersites objService
Public Sub EnumServersites( objSrv )
For Each objServer IN objSrv
If objServer.Class = "IIsWebServer" Then
If Not Ubound(objServer.SecureBindings) = "-1" Then 'check to see if there is at least one securebinding
WScript.Echo "Site ID = " & objServer.Name & VbCrLf & "Comment = """ & objServer.ServerComment
wscript.Echo "SSL Certificate Expiration Date: " & GetSSLExpirationDate(objServer.Name)
wscript.Echo "Days Remaining: " & DaysRemaining(GetSSLExpirationDate(objServer.Name))
wscript.echo vbcrlf & "-----------------------------" & vbcrlf
End If
End If
strBindings = vbNullString
Next
End Sub
Private Function GetSSLExpirationDate( strSiteID )
Set iiscertobj = WScript.CreateObject("IIS.CertObj")
iiscertobj.serverName = "localhost"
iiscertobj.InstanceName = "W3SVC/" & strSiteID
tmpArray = Split(iiscertobj.GetCertInfo,vbLf)
For Each x in tmpArray
If Left(x,2) = "6=" Then
GetSSLExpirationDate = Mid(x,3,len(x)-2)
End If
Next
End Function
Private Function DaysRemaining(strdate)
If IsDate(strDate) Then
strdate = cDate(strdate)
End If
DaysRemaining = DateDiff("d",Date,strdate)
End Function
このスクリプトを here から取得しました。