Cerca nel blog

mercoledì 9 marzo 2011

Vmware View Client per Ipad

Segnalo che è uscito su AppStore il VMware View Client per iPad.

Lo potete scaricare qui:

http://itunes.apple.com/it/app/vmware-view-for-ipad/id417993697?mt=8

domenica 6 marzo 2011

VMware Certified Professional (VCP4) Free Second Chance

Per un limitato periodo di tempo VMware in collaborazione con Pearson VUE danno la possibilità di ripetere l’esame VCP4 una seconda volta gratuitamente per tutti i candidati che hanno pagato a prezzo pieno il primo test.

Per beneficiare di questa opportunità è necessario seguire una specifica procedura:
  • durante la registrazione per il primo esame, pagato a prezzo pieno (senza applicazione di sconti) è necessario inserire il codice promozionale VCPTAKE1.
  • In caso di fallimento dell’esame è possibile iscriversi per il secondo tentativo utilizzando il codice VCPTAKE2 che azzererà il costo dell’esame.

Il costo dell’esame verrà azzerato solo per i canditati che nel primo tentativo hanno utilizzato il codice VCPTAKE1. La promozione scadrà il 31 luglio 2011.

Per maggiori dettagli è possibile consultare la pagina con l’annuncio ufficiale sul sito VMware.

venerdì 4 marzo 2011

AppSpeed - Modificare la rete openvpn di default e resettare la password di root

Oggi mi è capitata una cosa abbastanza "fastidiosa" durante l'installazione di VMware AppSpeed.

Dopo aver fatto il deploy dell'Appliance, ci accingiamo a configurare AppSpeed:

ip all'appliance,

ip virtual center

credenziali amministrative

Confermiamo tutti i parametri e lanciamo l'installazione.

Dopo un messaggio di conferma dell'avvenuta connessione al virtual center compare un'errore relativo ad un conflitto con il Network riservato all'openvpn utilizzato dall'AppSpeed.

Dopo una prima fase dedicata ad imprecazioni di vario tipo, risolviamo l'arcano:

l'AppSpeed utilizza come rete per dialogare con le sonde la rete privata 192.168.71.0, e non è possibile modificarla in quanto hardcoded nell'appliance, e il nostro virtual center indovinate su quale rete si trova? ovviamente sulla 192.168.71.

Sinceramente tra varie reti private non capisco perchè vmware abbia deciso di utilizzare una classe C, ma poi non capisco perchè non si possa cambiare.

In realtà non è vero che non si può cambiare, o meglio crediamo di aver trovato il modo, e l'abbiamo fatto e sembra funzionare.

La procedura che descrivo in seguito non è in alcun modo supportata da vmware:

1) Fare il deploy dell'AppSpeed lasciandolo spento

2) Procurarsi un'iso di CentOS

3) Power-on dell'App Speed, facendogli fare il boot dall'iso di CentOS

4) Al boot di CentOS digitare "linux rescue" e seguire tutti i passi lasciando i valori default

5) Una volta ottenuta la shell, eseguire chroot /mnt/sysimage

6) da qui digitate grep -r '192\.168\.71' /opt/bhive/*

7) la stringa risulterà presente in 3 file: prendete nota dei file, editateli con vi e modificateli a vostro piacimento e naturalmente salvate il tutto.

8) riavviate l'AppSpeed

La procedura al mento sembra funzionare ma devo ancora verificare a fondo.

Di AppSpeed vmware non comunica la password di root, però se seguite la procedura fino al punto 5 compreso, la potete resettare semplicemente digitando passwd al prompt dei comandi. Attenzioneperò che se riconfigurate l'AppSpeed lui la ricambia!

 

martedì 1 marzo 2011

Sostituzione Certificati SSL VirtualCenter

Premessa

I certificati vengono generati automaticamente durante la fase di installazione di VistualCenter. Non necessitano di sostituzione tranne in alcuni casi:

  • Certificati firmati da una CA commerciale
  • System monitoring

In entrambi i casi è necessario procedere con la sostituzione dei certificati.

I ceritficati di vCenter Server

I prodotti VMware utilizzano certificati standard X.509 versione3 (X.509v3) per cifrare le connessioni tra i vari componenti via SSL.

Certificati Server precaricati

I certificati firmati da CA commerciali, sono pre caricati sui sistemi operativi Windows; nel caso si utilizzi una root Certification Authority (CA) locale, sarà necessario importare i certificati della CA su tutti i client coinvolti.

Alcune specifiche dei Certificati

I cerificati sono nel formato standard X.509v3, vanno sostituiti con altri firmati conformi al formato PEM (un formato di chiave che conserva i dati codificati in Base-64 codificati nel formato DER).

La chiave utilizzata per firmare i certificati dovrà essere standard RSA 1024 bit (512-2048)

Il file di scambio delle informazioni personali (PFX) che permette il trasferimento dei certificati e delle loro chiavi private da un computer ad un altro o su di un media rimovibile, utilizza l'estenzione pfx (conosciuto anche come PKCS #12)

Certificati e chiavi di vCenter
Server Chiave Privata Certificato PFX
VCenter Server 4.x rui.key rui.crt rui.pfx

Posizioni dei Certificati

  • Windows 2003
C:\Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter\SSL\
  • Windows 2008
C:\Program Data\VMware\VMware VirtualCenter\SSL\

Sostituzione dei certificati di Default con certificati firmati da una CA commerciale

Configurare l'openssl

Editare l'openssl.cnf

  • La variabile $dir settata nel path locale (.).
  • La sezione [req] deve avere la variabile default_keyfile variable settata come $dir/rui.key.
  • La sezione [CA] si deve riferire alla sezione CA_default.
  • La sezione [CA_default] si riferisce ad una private_key chiamata myroot.key.

Creare la richiesta di certificato

  • Generare la chiave RSA e il file di richiesta CSR, per esempio
openssl req -new -nodes -out mycsr.csr -config openssl.cnf
  • Alla richiesta di inserire un nome qualificato di dominio, immettere il nome di sistema corretto commonName, quindi:
    • Spedire la richiesta generata ad una CA commerciale, per esepio a verisign.
    • Oppure firmare la richiesta con una CA root locale, tramite il comando:
openssl ca -out rui.crt -config openssl.cnf -infiles mycsr.csr

Dopo aver digitato la password della root key carà stato generato il nuovo certificato rui.crt e la chiave privata rui.key

Creare il file PFX

  • Per esportare assieme il certificato e la chiave nel formato PFX usando openssl digitare:
openssl pkcs12 -export -in rui.crt -inkey rui.key -name rui -passout pass:testpassword -out rui.pfx
  • NB: NON SUPPORTATO! Nel caso si voglia utilizzare una password diversa da testpassword sarà necessario editare il file
%ALLUSERSPROFILE%\Application Data\VMware\VMware VirtualCenter\Logs\vws.log

aggiungendo la riga (senza segni <>)

keystorePassword=<password>

dove password è la password del file pfx.

  • Riavviare i servizi
    • VMware VirtualCenter Server
    • VMware VirtualCenter Management Webservices
    • VMware VCMSDS
C:\Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter\instance.cfg
#Tue Jun 08 16:51:39 CEST 2010
applicationDN=dc\=virtualcenter,dc\=vmware,dc\=int
instanceUuid=574F5D64-72D8-4AB0-B56E-AC58F0A276EF
remotePeerHosts=\ www.example.com\:389\:-1
ldapInstanceName=VMwareVCMSDS
ldapPort=389
ldapStoragePath=C\:\\Program Files (x86)\\VMware\\Infrastructure\\VirtualCenter Server\\VMwareVCMSDS
keystorePassword=blablabla

N.B: Se siete amanti del brivido fatelo pure, altrimenti non cambiate la password "testpassword", in quanto hardcoded all'interno di vSpehere. A me ha dato rogne infinite.

Sostituire i certificati a caldo

Verificare di avere:

  • rui.crt, il certificato X.509 con la chiave pubblica RSA in formato PEM
  • rui.key, la chiave privata in formato PEM
  • rui.pfx, l'insieme del certificato e chiave in formato PKCS12

Sulle directory dove si trovano i fiels, cme da tabella, eseguire il backup dei 3 files esistenti.

Una volta sostituiti i files con i nuovi, utilizzando un browser eseguire:

  • Dal server dove sta virtualcenter
http://localhost/mob/?moid=vpxd‐securitymanager&vmodl=1

oppure

  • Da un altra macchina
https://<vSphere_server_system>/mob/?moid=vpxd‐securitymanager&vmodl=1
  • Digitare le credenziali amministrative di vCenter quando richiesto: per chiavi amministrative intendo lo user Administrator.

Apparirà una pagina web dal titolo "Managed Object Type: vpxSecurityManager"

  • Selezionare il link reloadSslCertificate.
  • Selezionare Invoke Method dalla finestra popup.
  • Nella pagina web apparirà il messaggio "Method Invocation Result: void"
  • Riavviare il servizio di vCenter "VMware VirtualCenter Management Webservices"
  • Ricollegarsi via browser al server vCenter per esaminare il nuovo certificato installato.

Sostituire i certificati con certificati auto-firmati

  • Creare una nuova root CA e la chiave RSA
penssl req -new -x509 -extensions v3_ca -keyout myroot.key -out myroot.crt -days 3650 -config openssl.cnf
  • Creare il certificato auto firmato
    • Modificare il file openssl.cnf seguendo le indicazioni dell'esempio:
[ req ]
default_bits           = 1024
default_keyfile        = rui.key
distinguished_name     = richiesta_distinguished_name
#Don't encrypt the key
encrypt_key            = no
prompt                 = no
string_mask            = nombstr

[ richiesta_distinguished_name ]
countryName            = IT
stateOrProvinceName    = Vostra Regione
localityName           = Città
0rganizationName       = Società
emailAddress           = info@.it
commonName             = <NOME_DEL_SERVER_CHE_AVRA'_IL_CERTIFICATO>
    • Creare il certificato auto-firmato (rui.key e rui.crt)
openssl req –nodes –new –x509 –keyout rui.key –out rui.crt –days 3650 –config openssl.cnf
    • Portarsi nella cartella dei certificati e sostituire i certificati originali del vCenter avendo cura di salvare quelli originali.

Procedura semplificata:

Creare una nuova root CA e la chiave RSA: ca.key e ca.crt

Se la CA è già presente, saltare questo passaggio.

echo "1 Creating a self signed demo CA"
cat << EOF | openssl req -x509 -extensions v3_ca -nodes -days 3650 -newkey rsa:1024 -keyout ca.key -out ca.crt 2>/dev/null
IT
Italy
Città
Vostra società
Divisione xxxxx
Società Root CA
info@xxx.it
EOF

Creare la richiesta di certificato: rui.key e rui.csr

cat << EOF | openssl req -nodes -newkey rsa:1024 -keyout rui.key -out rui.csr 2>/dev/null
IT
Italy
Città
Vostra Società
Divisione xxxxx
servervc.vostrasocietà.it
info@xxx.it


EOF

Firmare la richiesta con la CA: rui.crt

openssl x509 -req -days 730 -in rui.csr -CA ca.crt -CAkey ca.key -CAcreateserial -CAserial ca.srl -out rui.crt 2>/dev/null

Per VMware: esportare la chiave ed il certificato del server in formato pfx: rui.pfx

openssl pkcs12 -export -in rui.crt -inkey rui.key -name rui -passout pass:testpassword -out rui.pfx 2>/dev/null

Copiare i files

Copiare i Certificati nuovi (files rui.crt, rui.key e rui.pfx) nella cartella dei certificati

Riavvio facoltativo

Riavviare il VirtualCenter se non si vuole tentare l'operazione a caldo

Installare i certificati su clients Windows

  • Nel server vCenter, come amministratore installare il certificato della root CA
  • Per i clients vSphere, come utente normale (dal profilo del proprio utente) importare il certificato: start - esegui cmd
cd %systemroot%
certmgr.msc
    • Selezionare il contenitore "Autorità di certificazine fonti attendibili" (Trusted Root Certification Authorities) e menu Azione/Tutte le Attività/Importa ... (All Tasks/Import ...) per lanciare il wizard di importazione del certificato.
    • Portarsi nella posizione del certificato ed importarlo.

Utilizzando la propria root CA locale per firmare i certificati dei server, basterà importare solamente il certificato locale della propria root CA.

Problemi vari

vCenter non si collega al database

  • Resettare la password del database
vpxd -P pwd

vCenter dopo il riavvio non si collega ai server ESX

  • Ricollegarsi su ciascun server ESX come utente root.

Vengono utilizzati ancora i vecchi certificati

  • Verificare i passaggi attentamente

Potrebbe trattarsi che le connessioni in corso stiano ancora utilizzando i vecchi certificati. Per utilizzare forzatamente i nuovi certificati:

  • Riavviare i servizi di rete o le schede di rete sul erver vCenter
  • Riavviare il servizio "vCenter Server".

Non vengono visualizzati i plugins

  • Nei log dei webservices del virtualcenter appaiono i seguenti errori:
c:\ProgramData\VMware\VMware VirtualCenter\Logs\vws.log
...
[2010-09-07 13:01:11,628 Thread-18  WARN  com.vmware.vim.datafeed.virtualcenter.dataeventsource.DataEventSourceImpl] com.vmware.vim.datafeed.virtualcenter.dataeventsource.DataEventSourceImpl@392cf455
com.vmware.vim.vcstub.exception.CommunicationException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
 at com.vmware.vim.vcstub.stub.Method.executeMethod(Method.java:109)
 at com.vmware.vim.vcstub.stub.WaitForUpdatesExMethod.execute(WaitForUpdatesExMethod.java:62)
 at com.vmware.vim.vcstub.stub.ClientStub.waitForUpdatesEx(ClientStub.java:318)
 at com.vmware.vim.datafeed.virtualcenter.dataeventsource.DataEventSourceImpl.pumpDataEventUseWaitForUpdatesEx(DataEventSourceImpl.java:293)
 at com.vmware.vim.datafeed.virtualcenter.dataeventsource.DataEventSourceImpl.pumpDataEvent(DataEventSourceImpl.java:90)
 at com.vmware.vim.datafeed.DataEventSourcePump.run(DataEventSourcePump.java:112)
 at java.lang.Thread.run(Thread.java:619)
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
 at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:285)
 at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:191)
 at sun.security.validator.Validator.validate(Validator.java:218)
 at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
 at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
 at com.vmware.vim.common.ssl.AuthSSLX509TrustManager.checkServerTrusted(AuthSSLX509TrustManager.java:102)
 at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1027)
 ... 23 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
 at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
 at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
 at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:280)
 ... 29 more
...
  • Verificare che la password del certificato pfx sia corretta e riavviare il servizo webservices
  • Logs in caso di funzionamento corretto:
...
[2010-09-07 13:01:35,185 Thread-1  INFO  com.vmware.vim.vws.VwsContextListener] Starting VWS
[2010-09-07 13:58:00,467 Thread-1  INFO  com.vmware.vim.vws.VwsContextListener] Starting VWS
[2010-09-08 09:24:37,071 Thread-1  INFO  com.vmware.vim.vws.VwsContextListener] Starting VWS
[2010-09-08 10:03:00,600 Thread-1  INFO  com.vmware.vim.vws.VwsContextListener] Starting VWS

Errori nei collegamenti in Linked Mode

Nel virtualcenter ci sono i seguenti errori:

  • certificate verify failed
[2010-09-10 11:22:56.333 03520 error 'App'] [0] error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Verificare che il certificato abbia la password testpassword oppure far partire il virtualcenter con i parametri corretti per riconoscere la password modificata

Può essere utili la seguente KB di VMware VMware vCenter Server plugins fail after adding custom SSL certificates

Non funziona il servizio di Storage Management system

  • da vCenter Service Status
Storage Management Service Service initialization failed
  • nel file
c:\ProgramData\VMware\VMware VirtualCenter\Logs\sms.log
2010-11-08 08:42:10,455 [Thread-9] INFO  com.vmware.vim.sms.ServiceImpl$ServiceInitializer  - Retry #169 in 1800 seconds
2010-11-08 09:12:10,527 [Thread-9] DEBUG com.vmware.vim.sms.ServiceImpl  - Initializing service...
2010-11-08 09:12:10,531 [Thread-9] INFO  com.vmware.vim.sms.HealthAgentImpl  - Changing health status from INIT_FAILED to NOT_OPERATIONAL
2010-11-08 09:12:10,531 [Thread-9] DEBUG com.vmware.vim.sms.HealthAgentImpl  - Publishing service health information
2010-11-08 09:12:10,536 [Thread-9] INFO  com.vmware.vim.sms.HealthAgentImpl  - Changing health status from NOT_OPERATIONAL to INIT_IN_PROGRESS
2010-11-08 09:12:10,536 [Thread-9] DEBUG com.vmware.vim.sms.HealthAgentImpl  - Publishing service health information
2010-11-08 09:12:10,547 [Thread-9] DEBUG com.vmware.vim.sms.extension.CertTool  - Added vpxd certificate to truststore
2010-11-08 09:12:10,585 [Thread-9] DEBUG com.vmware.vim.sms.util.VpxdConnection  - Attempting to log in to vpxd at https://localhost:8089/sdk as extension 'com.vmware.vim.sms'
2010-11-08 09:12:10,596 [Thread-9] ERROR com.vmware.vim.sms.util.VpxdConnection  - Failed to connect to vpxd
AxisFault
 faultCode: ServerFaultCode
 faultSubcode: 
 faultString: Client connected without supplying a certificate.
 faultActor: 
 faultNode: 
 faultDetail:
 {urn:internalvim25}NoClientCertificateFault:null
Client connected without supplying a certificate.
 at sun.reflect.GeneratedConstructorAccessor73.newInstance(Unknown Source)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
 at java.lang.Class.newInstance0(Class.java:355)
 at java.lang.Class.newInstance(Class.java:308)
 at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104)
 at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90)
 at internalvim25.NoClientCertificate.getDeserializer(NoClientCertificate.java:87)
 at sun.reflect.GeneratedMethodAccessor129.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)
 at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)
 at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464)
 at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547)
 at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157)
 at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
 at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
 at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(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 internalvim25.InternalVimBindingStub.loginExtensionByCertificate(InternalVimBindingStub.java:60019)
 at com.vmware.vim.sms.util.VpxdConnection.connect(Unknown Source)
 at com.vmware.vim.sms.util.VpxdConnection.connect(Unknown Source)
 at com.vmware.vim.sms.ServiceImpl.init(Unknown Source)
 at com.vmware.vim.sms.ServiceImpl.access$100(Unknown Source)
 at com.vmware.vim.sms.ServiceImpl$ServiceInitializer.run(Unknown Source)
2010-11-08 09:12:10,597 [Thread-9] INFO  com.vmware.vim.sms.HealthAgentImpl  - Changing health status from INIT_IN_PROGRESS to INIT_FAILED
2010-11-08 09:12:10,597 [Thread-9] DEBUG com.vmware.vim.sms.HealthAgentImpl  - Publishing service health information
2010-11-08 09:12:10,600 [Thread-9] ERROR com.vmware.vim.sms.ServiceImpl  - VpxdConnectionFault encountered during service initialization
com.vmware.vim.sms.fault.VpxdConnectionFault
 at com.vmware.vim.sms.util.VpxdConnection.connect(Unknown Source)
 at com.vmware.vim.sms.util.VpxdConnection.connect(Unknown Source)
 at com.vmware.vim.sms.ServiceImpl.init(Unknown Source)
 at com.vmware.vim.sms.ServiceImpl.access$100(Unknown Source)
 at com.vmware.vim.sms.ServiceImpl$ServiceInitializer.run(Unknown Source)
2010-11-08 09:12:10,600 [Thread-9] INFO  com.vmware.vim.sms.ServiceImpl$ServiceInitializer  - Retry #170 in 1800 seconds
  • Verificare che la password del file pfx sia testpassword