Exchange 2016 Remote Powershell – SSL

Hallo zusammen,

Ich habe mich gefragt, weshalb die Exchange PowerShell immer noch HTTP verwendet und nicht HTTPS. Im Internet bin ich auf folgenden Blog Artikel für Exchange 2013 gestossen.

Exchange 2013 Remote Powershell – SSL
https://justaucguy.wordpress.com/2014/05/21/exchange-2013-remote-powershell-ssl/

Ich habe das mal auf meinem Exchange 2016 CU11 Server ausprobiert.

$MySession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://icesrv06.corp.icewolf.ch/PowerShell/ -Authentication Kerberos
Import-PSSession -Session $MySession -DisableNameChecking | Out-Null
Get-Recipient -identity a.bohren
Remove-PSSession $MySession

Nun denselben code jedoch mit https

$MySession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://icesrv06.corp.icewolf.ch/PowerShell/ -Authentication Kerberos
Import-PSSession -Session $MySession -DisableNameChecking | Out-Null
Get-Recipient -identity a.bohren
Remove-PSSession $MySession

Ein Zertifikatsfehler. Also habe ich mir mal die Zertifikate in Exchange angeschaut.

Get-Exchangecertificate

Für die Website sind zwei Zertifikate gebunden

  • icesrv06.corp.icewolf.ch von der AD Internen CA
  • mail.icewolf.ch von GoDaddy

Beim icesrv06.corp.icewolf.ch Zertifikat sind mehrere SAN hinterlegt. Müsste eigentlich klappen...

Also versuche ich es mal mit der URL aus dem Public Zertifikat.

Nun kann keine Kerberos Authentifizierung durchgeführt werden, weil ja kein SPN mit diesem Namen vorhanden ist.

Also prüfe ich mal die Authentication auf dem PowerShellVirtualDirectory

Get-PowerShellVirtualDirectory -server ICESRV06 | fl *Auth*

Und aktiviere nun Basic Authentication

Get-powershellvirtualdirectory -server ICESRV06 | Set-PowerShellVirtualDirectory -basicauthentication $true

Danach starte ich sicherheitshalber den IIS neu

iisreset /restart

Nun melde ich mich mit Basic Authentication und HTTPS am Server an. Dafür muss ich vorher eine Credential Variable befüllen und diese als Parameter übergeben.

$Cred = Get-Credential
$MySession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://mail.icewolf.ch/PowerShell/ -Authentication Basic -Credential $cred
Import-PSSession -Session $MySession -DisableNameChecking | Out-Null
Get-Recipient -identity a.bohren
Remove-PSSession $MySession

Voila, so klappt es auch mit Exchange 2016 und HTTPS Remote PowerShell.

So entspricht der Befehl auch der Verbindung zu Exchange Online wie im folgenden Artikel von mir zu entnehmen ist:

Powershell Remoting with Exchange Online
http://blog.icewolf.ch/archive/2015/02/07/powershell-remoting-with-exchange-online.aspx

Ob das supportet ist? Keine Ahnung - also Anwendung auf eigene Gefahr!

Grüsse
Andres Bohren