ユーザーの証明書が期限切れになったときを知る方法を知っている人はいますか?私は、次のコードusinによって与えられたユーザの証明書のすべてを引っ張る得ることができます知っている:ユーザーの証明書が期限切れになるときを調べる
Set objUserTemplate = _
GetObject("LDAP://cn=userTemplate,OU=Management,dc=NA,dc=fabrikam,dc=com")
arrUserCertificates = objUserTemplate.GetEx("userCertificate")
をしかし、その後、どのように私は、ポーリングについては、指定された証明書の有効期限を行くのですか?
X509Certificate cert = (X509Certificate)it.next();
java.util.Date expires = cert.getNotAfter();
GregorianCalendar calNow = new GregorianCalendar();
GregorianCalendar calExp = new GregorianCalendar();
calExp.setTime(expires);
//issuerDN = cert.getIssuerDN().getName();
int daysTilExp = com.willeke.utility.DateUtils.daysPast(calExp);
long diffDays = com.willeke.utility.DateUtils.diffDayPeriods(calNow,
calExp);
if(diffDays <= 0)
{
String mex = " Will expire in: " + diffDays + " days!";
、http://forums.novell.com/novell-developer-forums/dev-ldap/364977-q-retrieving-users-public-key-over-ldap.htmlが、私はVB内getNotAfter
メソッドを使用できるかどうか、または私はそれをやって行くだろうかわからない:私はここで、このJavaコードを参照してくださいでした。誰にもアイデアはありますか?可能であれば、VBScript/VB.Net/VBAなどでこのクエリを実行する際に助けが必要な場合は
私はこのVBScript code hereを見つけましたが、達成しようとしているようですが、かなり複雑ですここではJavaコードがはるかに単純なように見えました。 VBのいくつかの味でこのクエリを実行する簡単な方法はありますか?
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Const ForWriting = 2
Const WshRunning = 0
Set objUser = GetObject _
("GC://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
objUser.GetInfoEx Array("userCertificate"), 0
arrUserCertificates = objUser.GetEx("userCertificate")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "No assigned certificates"
WScript.Quit
Else
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strPath = "."
intFileCounter = 0
For Each arrUserCertificate in arrUserCertificates
strFileName = "file" & intFileCounter
strFullName = objFSO.BuildPath(strPath, strFileName)
Set objFile = objFSO.OpenTextFile(strFullName, ForWriting, True)
For i = 1 To LenB(arrUserCertificate)
ReDim Preserve arrUserCertificatesChar(i - 1)
arrUserCertificatesChar(i-1) = _
Hex(AscB(MidB(arrUserCertificate, i, 3)))
Next
intCounter=0
For Each HexVal in arrUserCertificatesChar
intCounter=intCounter + 1
If Len(HexVal) = 1 Then
objFile.Write(0 & HexVal & " ")
Else
objFile.Write(HexVal & " ")
End If
Next
objFile.Close
Set objFile = Nothing
Set objExecCmd1 = objShell.Exec _
("certutil -decodeHex " & strFileName & " " & strFileName & ".cer")
Do While objExecCmd1.Status = WshRunning
WScript.Sleep 100
Loop
Set objExecCmd1 = Nothing
Set objExecCmd2 = objShell.Exec("certutil " & strFileName & ".cer")
Set objStdOut = objExecCmd2.StdOut
Set objExecCmd2 = Nothing
WScript.Echo VbCrLf & "Certificate " & intFileCounter + 1
While Not objStdOut.AtEndOfStream
strLine = objStdOut.ReadLine
If InStr(strLine, "Issuer:") Then
WScript.Echo Trim(strLine)
WScript.Echo vbTab & Trim(objStdOut.ReadLine)
End If
If InStr(strLine, "Subject:") Then
Wscript.Echo Trim(strLine)
WScript.Echo vbTab & Trim(objStdOut.ReadLine)
End If
If InStr(strLine, "NotAfter:") Then
strLine = Trim(strLine)
WScript.Echo "Expires:"
Wscript.Echo vbTab & Mid(strLine, 11)
End If
Wend
objFSO.DeleteFile(strFullName)
objFSO.DeleteFile(strPath & "\" & strFileName & ".cer")
intFileCounter = intFileCounter + 1
Next
End If
アップデートは私がimport the certificate into the CAPICOMオブジェクトValidToDateプロパティをバック返すことができることを見ましたが、どうやらADに格納され、それinwhichフォーマットはこれに応じて、間違ったフォーマットである:crutoサイトから
ここに投稿する: http://www.powershellcommunity.org/Forums/tabid/54/aff/4/aft/1639/afv/topic/Default.aspxCAPICOMインポート関数からどのようなフォーマットが期待されていますか?
私はCapicomを使ってどうやってそれをやることができるかを示したこのpowershellコード(http://bit.ly/9IdB8)を見ましたが、フォーマットでcertを返すので、コードは彼にとってはうまくいきませんでしたCapicomは認識できませんでした: $ pfad = "LDAP:// server/cn =" + $ tnummer "、ou = operationalaccounts、ou = useraccounts、dc = domain、dc = net" $ user = New-Objectこの行には、間違った形式があります。 $ oCert = New-Object -com "CAPICOM.Certificate" foreach($ pfad) $ userCerts = $ user.GetEX( "userCertificate" $ userCertsの証明書){ $ oCert.import($証明書) $ oCert.ValidToDate } – mrTomahawk