Windows Zertifikat (PFX Format) in das PEM/CER/KEY Format (z.B. für Apache) konvertieren

Dies ist wieder mal so eine Notiz an mich selbst, damit ich nicht vergessen wie man PKCS#12-Dateien („.pfx“) in das Zertifikat (CER/PEM) und den private Key (KEY) zerlegt und konvertiert.

Apache braucht sowohl Privatekey als auch Zertifikat einzeln und beherrscht leider das PFX-Format nicht, das beides beinhaltet.

Daher muss diese Konvertierung sein.

openssl pkcs12 -in quelle.pfx -clcerts -nokeys -out ziel.cer
openssl pkcs12 -in quelle.pfx -nocerts -nodes  -out ziel.key
# rm -rf quelle.pfx

Das PEM „Format“ ist dasselbe wie ein CER (beides der private Key im DER-Format), wie man die Datei nennen möchte bleibt einem selbst überlassen.

Danach kann man die Schlüssel sofort in der Apache Site-Config verwenden:

<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /etc/apache2/ssl/ziel.cer
 SSLCertificateKeyFile /etc/apache2/ssl/ziel.key
 ...
</VirtualHost>

Exchange 2013/2016 und Office 365 Abwesenheitsbenachrichtigung (automatische Anwort) für Postfächer setzen

Problem

An zentraler Stelle sollen automatisch Abwesenheitsbenachrichtigungen aktiviert und konfiguriert werden. Zum Beispiel soll so im Krankheitsfall das Postfach eines Benutzers automatisch antworten – ohne das der Benutzer seinen Abwesenheitsassistenten bemühen muss.

Lösung mit Beispielen

Dafür gibt es das cmdlet „Set-MailboxAutoReplyConfiguration„, das die automatischen Antworten für fremde Mailboxen einschalten, anzeigen und anpassen kann.

Benutzer die das tun sollen, müssen natürlich über die passende Berechtigung im Zielpostfach verfügen. Die Berechtigung heisst „Automatic replies“ und ist standartmäßig in den Rollen „Organization Management“, „Recipient Management“ und „Help Desk“ enthalten.

Status der Auto-Antwort prüfen

[PS] C:\> Get-MailboxAutoReplyConfiguration -Identity MAILBOX| Select-Object AutoReplyState | fl

Auto-Antwort einschalten

[PS] C:\> Set-MailboxAutoReplyConfiguration -Identity MAILBOX -AutoReplyState enable

Auto-Antwort ausschalten

[PS] C:\> Set-MailboxAutoReplyConfiguration -Identity MAILBOX -AutoReplyState disable

Interne Auto-Antwort – Text verfassen

[PS] C:\> Set-MailboxAutoReplyConfiguration -Identity MAILBOX -InternalMessage "IHRE NACHRICHT"

Externe Auto-Antwort – Text verfassen

[PS] C:\> Set-MailboxAutoReplyConfiguration -Identity MAILBOX -ExternalMessage "IHRE NACHRICHT"

Weitere interessante Parameter sind

  • -AutoReplyState scheduled
    • Hier lassen sich Zeiten und Daten für die Auto-Antwort festlegen.
    • Notwendig sind dann Werte für die Start- ud Endzeiten:
      Set-MailboxAutoReplyConfiguration -Identity MAILBOX -AutoReplyState Scheduled -StartTime "7/10/2015 08:00:00" -EndTime "7/15/2015 17:00:00" -InternalMessage "IHRE NACHRICHT"
  • -ExternalAudience
    • Ob Auto-Antworten an externe Empfänger gesendet werden sollen: None (keine), known (Nur an Empfänger aus der Kontaktliste der Mailbox), All (an jeden)

Windows 2012 unter vSphere ohne Netz „Gigabit-Netzwerkverbindung Intel(R) 82574L Network link is disconnected.“ (Event ID 27)

Problem

An diesem Effekt hier habe ich mich grade viel zu lange aufgehalten:

Eine Windows Server 2012 Gast-VM unter vSphere 5.1/5.5 mit der Intel E1000 NIC mag auf diesem Netzwerkadapter kein stabiles Netzwerk haben. Verbindungen brechen random ab, aber Pings funktionieren hingegen meistens (eingehend). Die Verbindung läuft eine Weile, dann stirbt Sie wieder. Unabhängig von VLAN und phasikalischem Link. Stabil bleibt es dmit nie.

Es gibt beim Abbruch auch einen Eintrag im Eventlog:

Protokollname: System
Quelle:        e1iexpress
Ereignis-ID:   27
Aufgabenkategorie:Keine
Ebene:         Warnung
Schlüsselwörter:Klassisch
Beschreibung: Gigabit-Netzwerkverbindung Intel(R) 82574L
Network link is disconnected.

Lösung

Ausgelöst werden die Abbrüche durch den von Windows 2012 standardmäßig verwendeten Treiber (Intel(R) 82574L, Version: 12.0.150.0). Damit treten bei „hoher Netzwerklast“ an der VM Verbindungsfehler auf.

Möglichkeit 1: Einen neuen Ersatztreiber installieren.

Möglichkeit 2 (empfohlen): Die NIC einfach durch eine vmxnet3 ersetzten …

Active Directory: Wann hat sich ein Benutzer zuletzt angemeldet?

Problem

Wann hat sich ein Benutzer oder Konto zuletzt am Active Directory angemeldet? Die Objekt-Registerkarte im ActiveDirectory Benutzer- und Computer SnapIn ist da nicht sondelrich auskunftsfreudig.

Die Objekteigenschaft „LastLogon“ lässt sich zwar an der PowerShell mittels „Get-ADUser“ auslesen, aber nur als Large-Integer, der die Anzahl von 100-Nanosekunden-Intervallen seit dem 1.1.601 in UTC anzeigt. Leicht esoterischer Wert …

Lösung

Dieses PowerShell-Script wirft den Wert lesbar raus und funktioniert auch außerhalb von Domänencontrollern (RSAT-Tools vorausgesetzt):

Import-Module activedirectory
([DateTime][long](
     $(ForEach ($dc in ((Get-ADDomaincontroller -filter *).name)) 
        {
           (Get-ADUser -Identity "administrator" -Properties "LastLogon" -server $dc).LastLogon
        }
 ) | Measure -Maximum).Maximum).AddYears(1600)

Oder für besonders faule Admins auch als Einzeiler:

([DateTime][long]($(ForEach($dc in ((Get-ADDomaincontroller -filter *).name)){(Get-ADUser -Identity "mroelz" -Properties "LastLogon" -server $dc).LastLogon})|Measure -Maximum).Maximum).AddYears(1600)

Es geht natürlich auch via CMD, also an der klassischen Kommandozeile:

wmic NetLogin where (name like "%<USERNAME>%") get name, lastlogon

Powershell „Für jede Zeile in einer Textdatei“ … foreach Powershell Schnippsel

Weil ich JEDESMAL diesen blöden Syntax nachschaue, hier mein persönlichliches Powershell foreach-Bookmark:

[PS] C:\> foreach ( $eintrag in Get-Content .\liste.txt) { Mach-Irgendwas $eintrag }

Zum Beispiel:

[PS] C:\> foreach ( $foo in Get-Content .\liste.txt ) { Write-Host $foo }

Alternativ:

Get-Content .\liste.txt | foreach { $_ }

Ich weiss nicht warum, das bleibt einfach nicht in meinem Kopf haften. Das gute alte „for %%i in …“ hat aber auch eine ganze Weile gedauert, zugegeben.

Es gibt in der PowerShell zwei verschieden Varianten von ForEach:

  • Das ForEach-Object { … } Cmdlet
  • Die  ForEach() { … } Schleife

Beide Arten von ForEach können eingesetzt  werdenum, für jedes einzelne Objekt aus einer Menge von Objekten, etwas ausführen zu können.

  • ForEach-Object ist ein Cmdlet und wird in der Pipeline eingesetzt
  • Die ForEach() Schleife wird nicht innerhalb der Pipeline eingesetzt.

Mehr Input und Beispiele gibt es beim Peter Kriegel.