Thank you!

I shall look this over. I'm still in the middle of a ton of projects,
so probably won't get to it right away, but this should prove useful.

Kurt

On Tue, Apr 1, 2014 at 12:00 PM, elsalvoz <[email protected]> wrote:
> I wrote this function a while back that may get you started. This is set to
> remove the a particular cert but can be easily changed to what you may need.
>
>
>
> Function Remove-Certs
> { [CmdletBinding()]
> param (
> [Parameter(Position=0, Mandatory=$true)]
> [ValidateNotNullOrEmpty()][string]$computername,
> [Parameter(Position=1, Mandatory=$true)]
> [ValidateNotNullOrEmpty()][string]$SerialNum,
> [ValidateSet("LocalMachine","LocalUser")][Parameter(Position=2,
> Mandatory=$true)]
> [ValidateNotNullOrEmpty()][string][string]$LocalStore
> )
> $computerstore = ("\\$computername\Root")
> If (Test-Connection -ComputerName $computername)
> {
> Try{$store = New-Object
> system.security.cryptography.X509Certificates.X509Store
> $computerstore,$LocalStore #LocalMachine could also be LocalUser
> $store.Open('ReadWrite') #To do the removal, this method need read/write.
> for info Read can be used.
> $certs = $store.Certificates
>
> Write-Host ""
> Write-Host "************* Removing Certs with $SerialNum from Host
> $computername ****************************" -ForegroundColor Cyan
> Write-Host ""
> foreach ($cert in $certs) {
> $certDate = $cert.Notbefore.ToShortDateString() #converting Date to sort
> date and string to do comparinson
> $CertSerial = $cert.SerialNumber
>
> If ($CertSerial -eq $SerialNum)
> {
> Write-Host "Serial Number Matches Matches.. DELETING CERT" -BackgroundColor
> Red
> Write-Host "Subject: "$cert.Subject " Serial: "$cert.SerialNumber " Issue
> Date:" $cert.Notbefore " Expiration Date:" $cert.NotAfter -ForegroundColor
> Red
> #$store.Remove($cert) #Deleting the cert that matches. Uncomment this line
> to do the actual removal
> }
> Else
> {
> Write-Host "Serial Number Matches OK.. KEEPING CERT" -BackgroundColor Green
> #Writing out information of other certs. May be useful to see.
> Write-Host "Subject: "$cert.Subject " Serial: "$cert.SerialNumber " Issue
> Date:" $cert.Notbefore " Expiration Date:" $cert.NotAfter -ForegroundColor
> blue
> }
> }
> $store.Close()
> Write-Host ""
> Write-Host "************* Removed Certs with $SerialNum from Host
> $computername ****************************" -ForegroundColor Cyan
>   }
> Catch
> {
> Write-host $_.Exception.Message -NoNewline -BackgroundColor Red
>     }
> } Else {Write-Host "$computername - Failed: No Ping return."
> -ForegroundColor Red }
> }
>
> Get-Content C:\temp\RemoveCerts\1.txt | foreach {Remove-Certs -computername
> $_ -SerialNum xxxxxxxxxxxxxxx -LocalStore LocalMachine }
>
>
>
> On Tue, Apr 1, 2014 at 10:26 AM, Kurt Buff <[email protected]> wrote:
>>
>> Guess I'll have to look at some scripting.
>>
>> On Mar 31, 2014 6:15 PM, "Ken Schaefer" <[email protected]> wrote:
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: [email protected]
>>> [mailto:[email protected]] On Behalf Of Kurt Buff
>>> Sent: Tuesday, 1 April 2014 11:55 AM
>>> To: [email protected]
>>> Subject: Re: [NTSysADM] IIS certs expiration and autorenewal from a
>>> Windows CA
>>>
>>> > I am of the opinion that there shouldn't be any reason why these web
>>> > sites don't autorenew their certs, once installed.
>>>
>>> Auto-renewal isn't a process that looks at the details in the existing
>>> cert and says to the CA "give me a new cert with the same properties, except
>>> extend the expiry date"
>>>
>>> Auto-renewal is a process that’s says "based on my user/computer
>>> properties, give me a cert with said properties"
>>>
>>> The issue you have is that certs you've issued for your services are not
>>> tied to the user or computer properties per se - they have arbitrary Common
>>> Names (for starters).
>>>
>>> That's not to say you can't setup an automated process that, once a
>>> pending cert expiry is detected, creates an appropriate CSR and submits it
>>> to your CA, and your CA can be configured to auto-issue the cert.
>>>
>>> > I'm willing to be schooled on that, but after thinking about it for a
>>> > while I can't see any objections -
>>> > except perhaps "It can't be done."
>>>
>>> I don't think it can be done with the built-in auto-renewal process in
>>> Windows, because it doesn't do what you think/want it to do.
>>>
>>> > Asset management - that's a spreadsheet on which assets are tracked,
>>> > right? :)
>>>
>>> Not ideal.
>>>
>>> But you could improve on the idea: e.g. create some formulas that
>>> colour-code or highlight the contracts or assets that are reaching EoL.
>>> Write a VBScript that queries it every day, and generates an email with
>>> things that need to be renewed or a helpdesk ticket, or whatever.
>>> Downside to Excel is it might be hard to model different types of items
>>> without using different tabs, and you don't get any real referential
>>> integrity, and version control is a PITA etc.
>>>
>>> Cheers
>>> Ken
>>>
>>>
>>>
>>> > Cheers
>>> > Ken
>>> >
>>> > -----Original Message-----
>>> > From: [email protected]
>>> > [mailto:[email protected]] On Behalf Of Kurt Buff
>>> > Sent: Tuesday, 1 April 2014 10:03 AM
>>> > To: [email protected]
>>> > Subject: [NTSysADM] IIS certs expiration and autorenewal from a
>>> > Windows CA
>>> >
>>> > All,
>>> >
>>> > We had a bit of a scramble when an IIS SSL cert generated by our
>>> > internal CA expired, and didn't autorenew.
>>> >
>>> > Now that I've fixed it, I'm wondering how to set up autorenewal,
>>> >
>>> > From my reading so far, it looks like I need to set up an SPN for the
>>> > web site on the machine account, vis:
>>> > http://social.technet.microsoft.com/Forums/windowsserver/en-US/0b43513
>>> > 5-5a90-4957-9bcc-a92b4c519fda/autoenrollment-for-web-server-certificat
>>> > es
>>> >
>>> > and
>>> >
>>> > http://support.microsoft.com/kb/929650
>>> >
>>> > Is this correct, and sufficient? Or do I need to dig a little deeper?
>>> >
>>> > Kurt
>>> >
>>> >
>>>
>>>
>


Reply via email to