web-dev-qa-db-ja.com

各サイトに割り当てられたSSL証明書を決定するスクリプト

100以上のサイトがあるIIS6 Webサーバーがあります。最近、私は、CSRリクエストを更新するのではなく、新しいCSRリクエストを作成することにより、すべてのサイトが使用するワイルドカードSSL証明書を更新することを余儀なくされました。証明書をインストールし、各サイトを1つずつ更新して新しい証明書を使用できますが、次のことを考えていました。

  1. すべてのサイトを同時に更新する方法があり、
  2. スクリプトがあれば、各サイトで現在使用されている証明書を表示するために使用できます。
2
Thomas

興味のある人のための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 から取得しました。

1
Thomas