Samsung Galaxy S8+ Daten kopieren – der Wechsel mit Smart Switch

Ich bin einer von vielen, die ein Samsung Galaxy S8+ ihr eigen nennen dürfen.  Wie bei jedem neuen Handy stellt sich die Frage:
Wie kann man am Einfachsten die Daten des alten Handy auf das neue migrieren?  
Im folgenden Stelle ich kurz das beim S8 und S8+ beinhaltete App „Samsung Smart Switch“ vor und erkläre wie die Migration erfolgt.

Samsung Smart Switch

Das Samsung Galaxy S8 kommt mit der Software „Smart Switch“ daher, welche es ermöglich seine Daten von einem alten Smartphone zu kopieren.
Es werden iOS, Android, Blackberry und Windows Phones unterstützt, was eigentlich 99% der Smartphones abdecken sollte.
Ihr braucht lediglich das Samsung Smart Switch App aus dem jeweiligen App-Store zu installieren.
Beim Übertragen der Daten vom Samsung Galaxy S6 oder S7 wird sogar das Hintergrundbild und die Position der Icons auf dem Homescreen übertragen.

Anschließend gibt es die Möglichkeit der Übertragung der Daten per Kabel oder Kabellos. Bei meinem LG G4 mit LineageOS klappte die Übertragung über den beim Galaxy S8+ mitgelieferten USB-Host Adapter leider nicht. Jedoch ließ sich Kabellos alles übertragen.


 

Fazit

Wiederherstellung der Apps aus dem Google Konto

Über das App kann man relativ schnell und unkompliziert seine Daten und einen Großteil der Apps mit Einstellungen sowie Kontakten, Nachrichten (SMS), Anrufprotokoll, Bildern, und Dateien
von der SD-Karte übertragen. Es gibt jedoch Apps wie zum Beispiel WhatsApp oder der Google Authenticator welche sich auf diesem Weg nicht sichern lassen. Jedoch gibt es für WhatsApp ja eine integrierte Backup-Funktion die ihr unter (Einstellungen -> Chats -> Chat Backup) findet.
Der beste Weg um sein Handy zu sichern setzt leider Root-Rechte voraus. Wer Root Rechte auf seinem alten und neuen Handy hat, kann dann wirklich alle Apps und Einstellungen per Titanium Backup sichern.
[stextbox id=“info“]Wichtig: Beim ersten Einrichten eures neuen Galaxy S8 oder S8+ werdet ihr beim Einrichten eures Google Kontos gefragt, ob ihr die Daten eines alten Gerätes wiederherstellen wollt. Hier würde ich unbedingt „Nicht wiederherstellen“ auswählen, da hier lediglich nur die Apps und so gut wie keine weiteren Einstellungen installiert werden.[/stextbox]
 

WSUS 2012R2 für Verteilung von Windows 10 Upgrades vorbereiten

Mit der neusten Version des Windows Update Services bietet Microsoft jetzt endlich auch die Möglichkeit, Upgrades für Windows 10 bereitzustellen.
Dafür wird die WSUS Version „Build 6.3.9600.18324“ vorausgesetzt. Das aktuellste Patchlevel könnt ihr bei wsus.de einsehen (ganz runter scrollen).
In der Regel fehlen bei einem 2012 R2 Server lediglich die beiden Patches: KB3095113 sowie KB3159706 die mittlerweile aber auch per Automatische Updates verteilt werden.
In meinem Fall lies sich danach der WSUS nicht mehr starten, was sich über den Eventlog Eintrag: „Update Services failed its initialization and stopped.“ ausdrückte.

Aus der Fehlermeldung lies sich jetzt noch nicht das Problem erkennen. Das etwas detailliertere Logfile findet sich unter:

C:\Program Files\Update Services\LogFiles\SoftwareDistribution.txt

Dort fand sich dann das eigentliche Problem:

2017-04-24 09:35:55.755 UTC Info WsusService.6 SusService.SusServiceStartUpThreadProc WSUS Server Version: 6.3.9600.18324
2017-04-24 09:36:19.724 UTC Error WsusService.6 SusService.SusServiceStartUpThreadProc WUS Service failed during startup processing, sleeping before retry - Error Details: System.Data.SqlClient.SqlException (0x80131904): Cannot open database "SUSDB" requested by the login. The login failed.
Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at Microsoft.UpdateServices.DatabaseAccess.DBConnection.Connect(String connectionString)
at Microsoft.UpdateServices.Internal.DataAccess.ExecuteSPUpdateServerHealthStatus(String componentName, Boolean isRunning)
at Microsoft.UpdateServices.EventSystem.SusService.SusServiceStartUpThreadProc()
ClientConnectionId:5ef465d2-f07e-466e-a09d-ab40a02d50e8

Mit dieser Fehlermeldung kommt man auf den KB3159706 von Microsoft. Dort wird erklärt, dass noch die folgenden manuelle Schritte notwendig sind um die Installation der beiden vorherigen KB’s abzuschließen:

  1. Als Administrator in der Konsole ausführen
    C:\Program Files\Update Services\Tools\wsusutil.exe" postinstall /servicingführt zu folgendem Output:
    Log file is located at C:\Users\Username\AppData\Local\Temp\2\tmp46DF.tmp
    Post install is starting
    Post install has successfully completed
  2. Im Server Manager über „Add Roles and Features“ das „HTTP Activation“ Feature für .NET Framework 4.5 aktivieren
  3. Den WSUS Dienst neustarten
    net stop WsusService && net start WsusService

Für diejenigen, wo kein SSL für ihren WSUS aktiviert haben, war es dass an dieser Stelle. Wer SSL benutzt bekommt eventuell in dem Moment noch die folgende Fehlermeldung zu Gesicht: „The Client Web Service is not working.“

In diesem Fall muss noch die web.config Datei des Webservices angepasst werden.
 

  1. Wieder als Administrator per cmd ausführen:
    cd C:\Program Files\Update Services\WebServices\ClientWebService\
    takeown /f web.config /a
    icacls "C:\Program Files\Update Services\WebServices\ClientWebService\Web.config" /grant administrators:f
    
  2. Weitere Endpoint Einträge in der Datei „C:\Program Files\Update Services\WebServices\ClientWebService\Web.Config“ hinzufügen.
    Hier am einfachsten nach „endpoint address“ suchen. Der Block fängt mit folgenden Zeilen an:

    <services>
    <service
    name="Microsoft.UpdateServices.Internal.Client"
    behaviorConfiguration="ClientWebServiceBehaviour">

    Anschließend kommen die Einträge der Endpoints, zu denen ihr die folgenden dazu kopiert:

    <!--
    These 4 endpoint bindings are required for supporting both http and https
    -->
    <endpoint address=""
    binding="basicHttpBinding"
    bindingConfiguration="SSL"
    contract="Microsoft.UpdateServices.Internal.IClientWebService" />
    <endpoint address="secured"
    binding="basicHttpBinding"
    bindingConfiguration="SSL"
    contract="Microsoft.UpdateServices.Internal.IClientWebService" /> 

    Der restliche Teil des Eintrages sieht zur Vollständigkeit wie folgt aus:

    <endpoint address=""
    binding="basicHttpBinding"
    bindingConfiguration="ClientWebServiceBinding"
    contract="Microsoft.UpdateServices.Internal.IClientWebService" />
    <endpoint address="secured"
    binding="basicHttpBinding"
    bindingConfiguration="ClientWebServiceBinding"
    contract="Microsoft.UpdateServices.Internal.IClientWebService" />
    </service>
    </services> 
  3. Jetzt noch ganz unten in der Datei den letzten Eintrag wie folgt anpassen/hinzufügen:
    </bindings> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel> 
  4. Jetzt zur Sicherheit nochmal das System neustarten, Fertig.

Alexa die Google Suche beibringen – Amazon Echo

Mittlerweile ist der Markt für Sprachassistenten hart umkämpft und mit Google Home gibt es bald den ersten großen Konkurrenten für Amazon Echo.
Wer bereits ein Echo besitzt hat wohl gemerkt, dass Amazon scheinbar einen Vertrag mit Microsoft abgeschlossen hat – denn die Suchfunktion und etliche Features werden von Microsoft Bing bezogen. Von Google keine Spur.
Ich selbst stehe mit der Bing Suchmaschine eher auf Kriegsfuß und benutzte ausschließlich Google.
Ich selbst habe mir ein Echo Dot zugelegt und bin hier und da auf eine Sprachlose Alexa gestoßen, die mir leider nur mit „Entschuldigung, auf diese Frage habe ich leider keine Antwort“ auf  einige Fragen antwortet.
Beispiel: Ab welchem Alter ist man in Deutschland volljährig ?
Wie viele Länder gehören zu Europa ?
Von Haus aus gibt es leider nicht die Möglichkeit von Bing auf die Google Suche umzusteigen, jedoch kann man weitere Funktionalitäten in Alexa über die „Skills“ freischalten.
Ein paar schlaue Füchse haben hier einen Skill geschrieben, der das eigene Alexa an Google anbindet. Das ganze dauert ungefähr 5-10 Minuten.
Die Englischsprachige Anleitung und den Sourcecode findet ihr unter Github: https://github.com/tartanguru/alexa-google-search
Eine Videoanleitung gibt es hier:

Eine weitere (bebilderte) Anleitung, allerdings auf Englisch gibt es hier: http://alexamods.com/guide-install-ask-google-alexa-skill/.
Daher spare ich mir mal, eine weitere Anleitung zu schreiben.
Nach der Installation könnt ihr Alexa dann googlen lassen mit „Alexa frag Google: Was auch immer ihr wollt“.

LG G4 – Ein Custom Rom installieren

Mit der Veröffentlichung von Googles neuem High-End Flaggschiff (dem Pixel) wurde auch Android 7.1 herausgebracht. Die Hersteller haben sich bereits teilweise dazu geäußert, welche ihrer Geräte noch die neuste Android 7 Version erhalten werden – jedoch auch nicht vollständig bzw. ohne Terminangabe. T3n pflegt eine Liste mit Infos dazu, aus der sich entnehmen lässt, dass Android 7.1 bereits für das LG G5 ausgerollt wird. Ob und wann das Update für das LG G4 kommt ist noch offen.
Ich habe seit einigen Tagen das auf Android 7.1 basierende Custom-Rom CM14.1 (crDroid) auf meinem Handy installiert und bin bisher sehr zufrieden. Vorher hatte ich das Original Rom installiert und muss sagen, dass die Performance extrem zugenommen hat. Außerdem ist die Akkulaufzeit ein ganzes Stück besser als zuvor, da Android 7 auf eine „Batterieoptimierung“ setzt, wo durch das „stilllegen“ von Apps im Hintergrund der Akku geschont wird.
Wer also nicht warten kann, ist hier eine kleine Anleitung wie man das neueste Android auf sein LG G4 bekommt.
Das ganze passiert in 3 Schritten:

  1. Bootloader entsperren
  2. TWRP Recovery installieren
  3. Custom-Rom installieren

Weiterlesen

Xiaomi Mi Flower Tester – Der smarte Blumenmonitor

20160622172713_83028Wer kennt es nicht: Da hat man sich mal wieder ein paar Tage nicht den Zimmerpflanzen gewidmet, schaut die ein oder andere nicht mehr ganz so grün drein. Wohl das gießen vergessen ?
Stellt sich die nächste Frage: Wie viel Wasser ist denn jetzt eigentlich gut für meine Pflanze? Was ist die optimale Temperatur? Muss man mal wieder Düngen, oder braucht sie mehr Sonnenlicht ?
Xiaomi hat hier ein nagelneues Gadget herausgebracht, welches das Wohlbefinden eurer Pflanzen überwachen soll. Der „Xiaomi Mi Plant Flowers Tester“. Ich habe mir das Teil für 10,50€ bei Gearbest aus China bestellt. Lieferzeit war ca. 10 Tage, aber nun habe ich das Gadget schon ein paar Tage bei mir im Wohnzimmer platziert.
Wie funktioniert es ?
Man steckt den Flower Tester einfach in die Erde neben die Wurzel der Pflanze. Dieser hat die folgenden Sensoren:

  • Feuchtigkeitsensor (Muss bewässert werden?)
  • Temperatursensor (Stimmt das Raumklima?)
  • Lichtsensor (Bekommt die Pflanze genug Licht?)
  • Nährstoffgehalt als elektrische Leitfähigkeit in µS/cm (Stimmt der Düngeranteil?)

Das ganze kommt mit einer Handelsüblichen CR2032 Knopfzellenbatterie aus.  Zur Laufzeit habe ich noch keine Informationen gefunden, werde euch aber auf dem Laufendem halten.

Weiterlesen

Raspberry Pi 3 – Unnötige Pakete entfernen (Jessie)

Die beliebteste Distribution für den Raspberry Pi, das Raspbian wird mittlerweile in 2 Versionen zum Download angeboten. Einmal mit der neuen „Pixel“ Desktop Oberfläche und einmal als Lite Variante. Die „Pixel“ Version ist mittlerweile auf über 4GB angewachsen, was an den dutzenden vorinstallierten Apps liegt.
Den meisten kram wie Minecraft oder irgendwelche Entwicklungsumgebungen braucht man in der Regel ja eigentlich nie – also weg damit.
Ich habe mal eine Liste gemacht, mit den zusätzlich installierten Apps:

wolfram-engine
minecraft-pi
python-minecraftpi
sonic-pi
python3-numpy
smartsim
penguinspuzzle
timidity
scratch
nuscratch
python3-pygame
python-pygame
python-tk
python-picraft
bluej
claws-mail
greenfoot
minecraft-pi
nodered
geany
libreoffice*
xpdf

Um die Pakete zu deinstallieren folgenden Befehl absetzen:

apt-get remove wolfram-engine minecraft-pi python-minecraftpi sonic-pi python3-numpy smartsim penguinspuzzle timidity scratch nuscratch python3-pygame python-pygame python-tk python-picraft bluej claws-mail greenfoot minecraft-pi nodered geany libreoffice* xpdf

Anschließend gibt es noch eine Menge an nicht mehr benötigten Abhängigkeiten, die man ebenfalls deinstallierten sollte:

apt-get autoremove --purge

Was sagt ihr, gibt es noch weitere Pakete die man aufnehmen sollte ?

VMware Horizon View 6/7 – Smartcard Authentifizierung aktivieren

Um die Smartcard Authentifizierung des View Connection Servers zu aktivieren sind folgende Schritte notwendig.
Die Authentifizierung per Smartcard ist dann möglich bei Benutzerung von: View Horizon Client, PCoIP / Teradici, aber auch für die Administrationsoberfläche.
Zuerst muss mann ein Java Keystore anlegen in den das Root Zertifikat der eigenen Zertifizierungsstelle importiert wird.
Wenn man ein Zwischenzertifikat (Intermediate) benötigt, muss auch dieses Zertifikate importiert werden. (Einfach Schritt 1 wiederholen).

Schritt 1: Root Zertifikat in Keystore importieren

cd C:\Program Files\VMware\VMware View\Server\jre\bin
keytool.exe -import -alias ZertifikatsBeschreibung -file C:\temp\caRoot-base64.cer -keystore ..\..\sslgateway\conf\trust.key

Jetzt muss ein Passwort für den Keystore festgelegt werden. Das VMware Default Kennwort sollte hier eingetragen werden: secret
Mann kann auch ein eigenes Password wählen, dies muss dann aber auch in der locked.properties Datei eingetragen werden und bringt nicht wirklich eine höhere Sicherheit.Zusätzlich muss man dem angezeigtem, importiertem Zertifikat vertrauen (yes), damit es in den Keystore hinzugefügt wird.

Enter keystore password: secret
Re-enter new password:secret
Owner: your Certificate Information
Issuer: your Certificate Information
Serial number: your Serial Number
Valid from: Sun Jun 20 21:17:18 CEST 2010 until: Wed Jun 20 21:27:17 CEST 2040
Certificate fingerprints:
MD5:  your fingerprints
SHA1: your fingerprints
SHA256: your fingerprints
your fingerprints
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
#1: ObjectId: 1.3.6.1.4.1.311.21.1 Criticality=false
0000: 02 01 00                                           ...
#2: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:true
PathLen:2147483647
]
#3: ObjectId: 2.5.29.15 Criticality=false
KeyUsage [
DigitalSignature
Key_CertSign
Crl_Sign
]
#4: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
.....
]
]
Trust this certificate? [no]:  yes
Certificate was added to keystore

Java Keystore erstellen

Schritt 2: locked.properties anlegen / ergänzen

Jetzt wechseln wir in das folgende Verzeichnis:

C:\Program Files\VMware\VMware View\Server\sslgateway\conf

Dort sollte sich nun unserer Keystore (trust.key) befinden. Damit der View Connection Server weiß, dass er die Datei laden soll, müssen wir nun eine neue Datei anlegen (falls nicht vorhanden) die: locked.properties heißt.
Die Datei mit Notepad editieren und mit folgenden Inhalt füllen:

trustKeyfile=trust.key
trustStoretype=jks
useCertAuth=true

Schritt 3: View Connection Server Service neustarten

Entwerder per CMD:

net stop wsbroker
net start wsbroker

Oder per services.msc
view-restart-service

Schritt 4: Smartcard Authentication innerhalb des View Administrators aktivieren

Nun muss noch im View Administrator die Smartcard Authentication aktiviert werden. Es gibt hier zwei Einstellungsmöglichkeite: Optional und Required. Bei Optional kann man sich wie wie gewohnt per User/Passwort authentifizieren. Wird eine Smartcard erkannt, wird diese aber gewählt. Bei Required ist eine Anmeldung per Smartcard verpflichtend.
Die Einstellung findet man unter: View Configuration -> Servers -> Connection Servers -> Server auswählen -> Edit -> Authentication
view-smartcard
Um zu überprüfen ob alles korrekt ist, kann man im debug log nach „useCertAuth“ suchen. Die Logs liegen unter: „C:\ProgramData\VMware\VDM\logs“

2016-09-16T13:43:50.488+02:00 DEBUG (1F48-1A98) <Front> [e] useCertAuth is configured as: false
2016-09-16T13:43:50.488+02:00 INFO (1F48-1A98) <Front> [e] Smart Card/Certificate Authentication will not be used as useCertAuth is false
bzw.
2016-09-16T14:56:15.505+02:00 DEBUG (1CD0-1D88) <Front> [e] useCertAuth is configured as: true
2016-09-16T14:56:15.505+02:00 INFO (1CD0-1D88) <Front> [e] Smart Card/Certificate Authentication enabled at gateway

Fertig 😉

SMTP Warteschlange (postqueue) unter Ubuntu leeren

Hat man aufgrund eines Problems auf einmal eine riesige Anzahl Mails in der SMTP Warteschlange eines Servers kann man diese auch händisch leeren.
Natürlich nur wenn die Mails nicht mehr relevant sind. Wie dies geht, bzw. wie man auch nur einzelne Mails aus dem Ausgang entfernt ist hier kurz beschrieben.
Klappt unter Ubuntu 14.04, sollte aber auch bei älteren Versionen sowie Debian funktionieren, da fast die gleichen Postfix Versionen eingesetzt werden.
Um die SMTP Warteschlange anzeigen zu lassen:

postqueue -p 

Führt zu der Ausgabe:

27389E2449 609 Mon Aug 8 13:17:40 nagios@domain.de
(host smtp.host[1.2.3.4] said: 451-Unknown sender ip address. check your settings. 451 2016-08-11-120-dad7d58089e2f4ab10811ddf75be38fd (in reply to MAIL FROM command))
absender@domain.de
-- 973 Kbytes in 1090 Requests.

Um die Warteschlange komplett zu löschen wird dies mit dem Befehl gemacht:

postsuper -d ALL
postsuper: Deleted: 1090 messages

Alternativ kann man aber auch nur einzelne Mails löschen indem man die ID angibt:

postsuper -d 27389E2449
postsuper: Deleted: 1 messages

Wenn man im Anschluss nochmal mit postqueue -p abfragt sollte man eine leere Warteschlange haben:

postqueue -p
Mail queue is empty

Vmware Horizon View 7 – Composer – Fix: "Internal View Composer Error"

vmwareviewcomposer
Beim Installieren eines neuen View Composers bin ich auf den folgenden Fehler gestoßen. Ich dachte zuerst an ein Zertifikatsproblem, da in den Logs zuvor SSL sehr oft erwähnt wurde. Bei genauerem hinsehen fällt aber ein „Access Denied“ auf, welches mich dann auf den richtigen Weg brachte.
Hat der Benutzer, welcher für die vCenter Anbindung verwendet wird, die passenden „lokalen“ Rechte auf dem Server ?
In meinem Setup habe ich den View Composer auf dem vCenter Server installiert und verwende Domänen-Benutzer. Ich hatten dem Benutzer volle Administrationsrechte im vCenter gegeben, jedoch keine lokalen Rechte (in Windows).

Lösung:

Also dem Benutzer der auch für den vCenter Zugriff verwendet wird lokale Administrationsrechte gegeben.
Anschließend den View Composer Dienst neustarten und über den View Administrator erneut probieren.
[EXPAND VDM DebugLog]
2016-07-12T15:52:34.598+02:00 DEBUG (0B40-0FA4) <Thread-43> [TrackerObject] Sync complete: DomainHealth:SERVERNAME|DOMAIN to version: 11
2016-07-12T15:52:34.600+02:00 DEBUG (0B40-0FA4) <Thread-43> [TrackerManager] Sending message: (TrackerMessage SYNC {}: {nn=SERVERNAME, u=[{„type“:“SET“,“item“:{„name“:“ATTR_DOMAIN_NAME“,“type“:“STRING“,“stringValue“:“DOMAIN“}},{„type“:“SET“,“item“:{„name“:“ATTR_DOMAIN_DNS“,“type“:“STRING“,…
2016-07-12T15:52:34.794+02:00 DEBUG (0B40-0E4C) <Thread-51> [TrackerObject] Sync complete: certificatessohealth:SERVERNAME to version: 11
2016-07-12T15:52:34.795+02:00 DEBUG (0B40-0E4C) <Thread-51> [TrackerManager] Sending message: (TrackerMessage SYNC {}: {nn=SERVERNAME, u=[{„type“:“SET“,“item“:{„name“:“name“,“type“:“STRING“,“stringValue“:“SERVERNAME“}},{„type“:“SET“,“item“:{„name“:“enrollserverconnection“,“type“:“NVPLIST“,“nvpList…
2016-07-12T15:52:34.795+02:00 DEBUG (0B40-0ED4) <EnhancedSecurityManager$EnhancedSecurityTask-1468330894772> [EnhancedSecurityManager$EnhancedSecurityTask] Current mode: ENHANCED current level: ENHANCED
2016-07-12T15:52:45.905+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [CertMatchingTrustManager] Created new CertMatchingTrustManager com.vmware.vdi.ssl.CertMatchingTrustManager@23e07a96 with ThumbprintManager com.vmware.vdi.desktopcontroller.LdapThumbprintManager@4320146b
2016-07-12T15:52:45.906+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] Creating new HardenedSSLSocketFactory, caller=com.vmware.vdi.ssl.HardenedSSLSocketFactory.<init>(SourceFile:67)
2016-07-12T15:52:45.907+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] SSL provider: SunJSSE version 1.8
2016-07-12T15:52:45.907+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] SSL protocol: TLSv1.2
2016-07-12T15:52:45.908+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] SSL secure protocols (2): [TLSv1.2, TLSv1.1]
2016-07-12T15:52:45.908+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] SSL cipher suites (6): [TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA]
2016-07-12T15:52:45.953+02:00 DEBUG (0B40-0938) <MessageFrameWorkDispatch> [MessageFrameWork] ValidateCertificateChain ok=1, msecs=0
2016-07-12T15:52:46.046+02:00 DEBUG (0B40-0938) <MessageFrameWorkDispatch> [MessageFrameWork] ValidateCertificateChain ok=1, msecs=0
2016-07-12T15:52:46.806+02:00 DEBUG (0B40-0938) <MessageFrameWorkDispatch> [MessageFrameWork] ValidateCertificateChain ok=1, msecs=0
2016-07-12T15:52:46.834+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [ViewFlexFactory] com.vmware.vdi.admin.ui.bean.VCServerBean.validateCertificate 37242 ms
2016-07-12T15:52:46.852+02:00 DEBUG (0D30-1344) <AJP-42> [SimpleAJPService] (ajp:admin:Request16) Response 200 OK
2016-07-12T15:52:53.873+02:00 DEBUG (0D30-1068) <Thread-27> [SimpleAJPService] (ajp:admin:Request17) Request from /10.0.101.55: POST /admin/amfproxy/amfsecure
2016-07-12T15:52:53.875+02:00 DEBUG (0D30-1068) <Thread-27> [SimpleAJPService] (ajp:admin:Request17) Gateway headers sent to the broker:
2016-07-12T15:52:53.875+02:00 DEBUG (0D30-1068) <Thread-27> [SimpleAJPService] (ajp:admin:Request17) gateway-type = [SG-cohosted]
2016-07-12T15:52:53.876+02:00 DEBUG (0D30-1068) <Thread-27> [SimpleAJPService] (ajp:admin:Request17) gateway-location = [Internal]
2016-07-12T15:52:54.585+02:00 DEBUG (0B40-0FB4) <CBHealthUpdate> [TrackerObject] Sync complete: BrokerHealth:SERVERNAME to version: 17
2016-07-12T15:52:54.587+02:00 DEBUG (0B40-0FB4) <CBHealthUpdate> [TrackerManager] Sending message: (TrackerMessage SYNC {}: {nn=SERVERNAME, u=[{„type“:“SET“,“item“:{„name“:“HEALTH_LAST_UPDATE_TIME“,“type“:“LONG“,“longValue“:1468331574585}},{„type“:“SET“,“item“:{„name“:“ATTR_BROKER_VERSION“,“type“:“ST…
2016-07-12T15:52:54.603+02:00 DEBUG (0B40-0938) <MessageFrameWorkDispatch> [MessageFrameWork] ValidateCertificateChain ok=1, msecs=0
2016-07-12T15:52:55.079+02:00 ERROR (0B40-1284) <ajp-nio-8009-exec-2> [VCServerBean] Internal View Composer error. Contact your administrator.
2016-07-12T15:52:55.083+02:00 DEBUG (0B40-1284) <ajp-nio-8009-exec-2> [ViewFlexFactory] Internal View Composer error. Contact your administrator. com.vmware.vdi.admin.ui.common.ViewFlexFactory$ViewProxy.invoke(SourceFile:125)
com.vmware.vdi.admin.ui.common.FlexRemoteException: Internal View Composer error. Contact your administrator.
at com.vmware.vdi.admin.ui.common.FlexFaultHandler.systemError(SourceFile:70)
at com.vmware.vdi.admin.ui.bean.VCServerBean.validateViewComposerCertificate(SourceFile:1758)
at com.vmware.vdi.admin.ui.bean.VCServerBean.validateViewComposerCertificate(SourceFile:1710)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vmware.vdi.admin.ui.common.ViewFlexFactory$ViewProxy.invoke(SourceFile:113)
at com.sun.proxy.$Proxy60.validateViewComposerCertificate(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:386)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:178)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1468)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1044)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:101)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:154)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:42)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:63)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:190)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:328)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:373)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:720)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)
at com.vmware.vdi.admin.ui.servlet.AMFProxyServlet.a(SourceFile:90)
at com.vmware.vdi.admin.ui.servlet.AMFProxyServlet.doPost(SourceFile:57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.filters.FailedRequestFilter.doFilter(FailedRequestFilter.java:97)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.vmware.vdi.support.ViewAdminFilter.doFilter(SourceFile:103)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.vmware.vdi.admin.be.filters.CertificateAuthFilter.doFilter(SourceFile:140)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.vmware.vdi.admin.be.filters.DisableUrlSessionFilter.doFilter(SourceFile:73)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:868)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: Access is denied.
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.vmware.SviService.Admin.v3_5.Binding.SslBasicAuthEndpointStub.getVersion(SslBasicAuthEndpointStub.java:2015)
at com.vmware.vdi.svisupport.SVIConnection.testConnection(SourceFile:147)
at com.vmware.vdi.admin.be.VCManager.validateSVICert(SourceFile:1235)
at com.vmware.vdi.admin.ui.bean.VCServerBean.validateViewComposerCertificate(SourceFile:1740)
… 61 more
2016-07-12T15:52:55.083+02:00 DEBUG (0B40-1284) <ajp-nio-8009-exec-2> [ViewFlexFactory] com.vmware.vdi.admin.ui.bean.VCServerBean.validateViewComposerCertificate 1201 ms
2016-07-12T15:52:55.153+02:00 DEBUG (0D30-1300) <AJP-25> [SimpleAJPService] (ajp:admin:Request17) Response 200 OK
2016-07-12T15:53:30.182+02:00 DEBUG (0D30-0E80) <MsgWorker#5> [bm] Item on queue „Inbound JMS Worker“ for 55 us, queue length = 0, available workers = 9 of 10
2016-07-12T15:53:30.182+02:00 DEBUG (0D30-0E80) <MsgWorker#5> [r] (-) RequestGetStatus: serverType = ice, server = null, localHostname = SERVERNAME
2016-07-12T15:53:30.183+02:00 DEBUG (0D30-0E80) <MsgWorker#5> [cc] (-) Queuing request ABSGC29-b
2016-07-12T15:53:30.183+02:00 DEBUG (0D30-1008) <ABSGC29> [cc] Handling request ABSGC29-b, on queue for 33uS
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-1008) <ABSGC29> [cc] Queuing receipt ABSGC-11
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-1180) <ABSGC29:C> [cm] Handling message ABSGC-11, on queue for 28uS
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-0E80) <MsgWorker#5> [cs] (-) Queuing request PSGC28-10
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-100C) <PSGC28> [cs] Handling request PSGC28-10, on queue for 26uS
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-100C) <PSGC28> [cs] Sending GETCOUNTERS request PSGC28-10
[/EXPAND]

Vmware View Horizon 7 – SSL Zertifikat austauschen

Für ein Testsystem habe ich den neuen View Horizon 7 Connection Server installiert und wollte das selbstsignierte Zertifikat durch ein Zertifikat der Windows CA austauschen.
Normalerweise hat es immer geklappt über die MMC einfach ein neues Computerzertifikat zu erzeugen, und den Friendly Name umzusetzen.
Jedoch bekam ich diesmal folgende Fehlermeldung:

2016-07-12T08:44:31.019+02:00 INFO (1188-0C10) &lt;Thread-1&gt; [v] The Secure Gateway Server is checking for connection attempts on http://*, port:80
2016-07-12T08:44:31.065+02:00 INFO (1188-0C10) &lt;Thread-1&gt; [v] The Secure Gateway Server is using SSL certificate store of type KeyVault
2016-07-12T08:44:31.065+02:00 WARN (1188-0C10) &lt;Thread-1&gt; [KeyVaultKeyStore] (NetHandler) Failed to get certificate chain for: "vdm"
2016-07-12T08:44:31.065+02:00 WARN (1188-0C10) &lt;Thread-1&gt; [KeyVaultKeyStore] (NetHandler) Certificate chain not found for alias: vdm
2016-07-12T08:44:31.081+02:00 INFO (1188-0C10) &lt;Thread-1&gt; [v] The Secure Gateway Server is listening on https://*, port:443
....
2016-07-12T08:46:22.939+02:00 ERROR (1188-1AE4) &lt;pool-1-thread-1&gt; [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore
2016-07-12T08:46:22.940+02:00 ERROR (1188-1AE4) &lt;pool-1-thread-1&gt; [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore
2016-07-12T08:46:22.941+02:00 ERROR (1188-1AE4) &lt;pool-1-thread-1&gt; [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore
2016-07-12T08:46:22.942+02:00 ERROR (1188-1AE4) &lt;pool-1-thread-1&gt; [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore
2016-07-12T08:46:22.963+02:00 ERROR (1188-0938) &lt;pool-1-thread-2&gt; [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore

Also habe ich nochmal von Hand eine Zertifikatsanforderung mit OpenSSL erstellt:

openssl req -new -sha256 -nodes -newkey rsa:4096 -subj '/C=DE/ST=Hessen/L=Location/O=Company/OU=TEST/CN=server.fqdn.info/emailAddress=support@domain.de/subjectAltName=altFQDN,DNS.1=view.domain.info' &gt; ssl.csr
Generating a 4096 bit RSA private key
....................................................................................................................................................++
..........................................................................................++
writing new private key to 'privkey.pem'
-----

Anschließend über die Windows Zertifizierungsstelle signiert (https://certsrv.domain.info/certsrv/). Als Base64 Zertifikat wieder herunterladen und ein PFX generieren:

openssl pkcs12 -export -in certnew.cer -inkey privkey.pem -out cert.pfx
Enter Export Password:
Verifying - Enter Export Password:

Anschließend das Zertifikat über die MMC (Certificates) in den Personal Zertifikatsspeicher importieren.
Vmware View erstellt automatisch ein selbst signiertes Zertifikat, welches den Friendly Name „vdm“ trägt. Dieser muss umbenannt werden, z.b. „vdm-original“.
Bei dem eigenen Zertifikat muss dann der Friendly Name „vdm“ über (Rechtsklick – Properties) gesetzt werden.
friendlycertname
Anschließend den „Vmware View Connection Server“ Dienst neustarten.
img_001