IIRF e IIS8: problema RedirectRule

Uso da molto tempo oramai la libreria Ionic’s ISAPI Rewrite Filter su IIS e lo trovo molto veloce ed intuitivo: mi permette di giocare con l’Url Rewriting su IIS senza alcun tipo di problema.

Ho scoperto con mio grande disappunto che la libreria, ferma con lo sviluppo da ormai molto tempo (2011…) e, tra l’altro, hostata su CodePlex che tra poco chiuderà i battenti, su IIS8 si comporta veramente male. Se su IIS7 e precedenti, il funzionamento era impeccabile, sul nuovo IIS8 impazzisce che è un piacere.

Tutta la parte di Rewrite funziona correttamente, ma quando si prova a lanciare una RedirectRule, il sito definito in IIS si schianta, senza tante possibilità di ritirarlo su, se non riavviando il server fisicamente. Un bel guaio.

Navigando qua e la ho trovato una fantastica risorsa che ha risolto questo annoso problema (ho provato innumerevoli tentativi, senza grandi risultati): la trovate qui.

Per comodità, onde evitare che la pagina di Nelson Pires scompaia, trovate la libreria disponibile anche qui: IIRF-2.1.2.4-x64_IIS8

SSL, IIS ed SNI: un calvario non da poco

Problemi SSL su IIS installato con SNI su dispositivi Android datatiUltimamente ho avuto il mio bel da fare per rendere visibili i siti www.torinosud.it e www.quotidianovenaria.it, che ho pubblicato direttamente sotto https.

Onestamente, ignoravo inizialmente tutto quello che c’era da sapere su configurazione SSL, IIS, SNI, visibilità siti, tipologie di certificati https da attivare.

Ho acquistato i miei bei certificati su LeaderTelecom, nello specifico degli InstantSSL Organization Validation.
Sono passato attraverso tutta la tiritera di validazione dell’organizzazione e ho finalmente attivato i miei certificati SSL.

IIS, nella versione Windows Server 2012 R2, ha una bella opzione SNI: grazie a questo, puoi indicare N domini certificati HTTPS sotto lo stesso IP.
Mi dico fortunato, poichè il server attivato presso OVH è giovanissimo, e procedo tranquillamente con la configurazione dei siti.

Passo attraverso la fase di test, con gli admin che inseriscono i vari articoli e testano le funzionalità, segnalando qua e la i bachi che si verificano. Abbiamo una variegata sequela di dispositivi iOS e Android, cosicchè mi tranquillizzo sulla visibilità del sito.

Una volta online, cominciano a fioccare le segnalazioni di utenti che, con dispositivi Android datati, non riescono ad accedere alla pagina. Cioè: accedono, peccato che Google segnali che ci sono problemi con il certificato, e che il sito non offre sufficienti garanzie di sicurezza. Discreta figura di merda.

In pratica, configurando i siti con SNI funzionano perfettamente su dispositivi fissi, su qualsiasi iOS, ma su Android cominciano i dolori. Da 5.0.0 ad andare indietro, i problemi di sicurezza fioccavano.

Questa opzione, Server Name Indication, su server Apache c’è da molto tempo e funziona egregiamente, mentre Microsoft l’ha adottata non da molti anni, infatti sul mio altro server con Windows Server 2008 non ce l’ho. E’ onorevole da parte di Microsoft adottare una politica per la configurazione di più siti sotto lo stesso IP (vista la penuria degli stessi con l’andare del tempo), ma rimane il fatto che i dispositivi datati non riconoscano tale configurazione come valida.

In pratica, su Windows, è necessario indicare un dominio principale, configurandolo SENZA SNI e SENZA l’indicazione del dominio. L’unica cosa da fare è associare il rispettivo certificato.

Per i successivi domini, bisogna indicare quale sia il binding (www.miosito.com), flaggare la spunta “Richiedi l’indicazione del nome del server SNI” e selezionare il giusto certificato.
Il server, ricevendo tutte le richieste sulla porta .443 sullo stesso IP, si occuperà di smistare sul giusto sito tutte le chiamate: peccato che analizzando con un qualsiasi tester SSL, risulta che il dominio primario è quello configurato per primo.
I nuovi dispositivi ignorano questa indicazione e verificano solamente la catena di certificati che fa riferimento al dominio visitato, ma i vecchi dispositivi non capiscono questa indicazione e presumono che ci sia una malconfigurazione della catena stessa.

Nel mio caso le problematiche erano due:

  • la corretta installazione dei certificati SSL: prima quelli di root, poi quelli intermedi e, infine, il certificato https del dominio.
  • l’opzione SNI assolutamente non compatibile con dispositivi pre-2012

Come ho risolto?

Avendo a disposizione un server dedicato, ho ordinato alcuni IP aggiuntivi e ho configurato tutti i siti http:80 su un IP e i vari siti HTTPS:443 con un IP univoco ognuno.
Un link che mi è stato comodo per testare la bontà dell’installazione del singolo certificato è questo: https://sslanalyzer.comodoca.com/?url=www.torinosud.it.
Inserite il vostro dominio e testate se l’installazione è corretta.

Bibliografia

Avendo vinto le Olimpiadi delle Bestemmie, vi posto alcuni link che potrebbero tornare utili:

Web Design: allineare un DIV in basso rispetto ad un altro DIV

Molti di noi, alle prese con i primi progetti di Web Design, si sono trovati ad affrontare l’annoso problema dell’allineamento degli oggetti dell’interfaccia.

Uno dei problemi più frequenti è quello di allineare un elemento, che può essere un titolo o una immagine, all’interno di un DIV.
Non vorrete mica ANCORA utilizzare le tabelle per le interfacce? VERO???

La cosa è più semplice di quello che sembra:

<div class="container">

<div class="obj">ciao</div>

</div>

Diamo una struttura al container:

.container{

width: 300px;
height: 300px;
position: relative;
border: 1px solid red;

}

Come vedete, è fondamentale settare come position:relative il container: in questa maniera comunichiamo che LUI è il riferimento dimensionale rispetto ad eventuali elementi absolute al suo interno.

Ora definiamo la regola CSS per il contenuto:

.obj{
width: 50px;
height: 50px;
background: blue;
position: absolute;
}

Come vedete, se definiamo come absolute il suo contenuto, possiamo farlo “fluttuare” all’interno del suo contenitore:relative. Comodo no?

Cosa manca?
Manca che non abbiamo indicato su quale bordo dovrà “appoggiarsi” il DIV.obj.
Aggiungiamo un bel bottom:0; right;10px;

.obj{
width: 50px;
height: 50px;
background: blue;
position: absolute;

bottom: 0;
right: 10px;

}

Fatto.
Un bel contenitore ed un oggetto allineato in basso a destra.
Ora potete tranquillamente inserire, all’interno del div.obj, testi e foto: rimarranno fantasticamente allineati come volete voi!

 

 

 

 

Aggiungere le gestures a jQuery

Che stiate lavorando ad un progetto in Cordova, oppure ad una web app, potrebbero tornarvi utili le gestures: swipe, rotate, pinch…tutti eventi che normalmente non sarebbero intercettabili con il semplice jQuery.

Ebbene, ai nostri progetti ci viene incontro un bellissimo plugin di $, ossia JGestures ( che trovate qui:https://jgestures.codeplex.com/documentation ).

Bisogna solamente fare attenzione che il DOM sia stato caricato completamente, quindi bisognerà intercettare gli eventi solamente una volta .ready.

Nel nostro caso abbiamo impostato un test nella seguente maniera:

	$('#page_test').bind('swipeone','li',function(event, obj){
		console.log(event);
		console.log(obj);
		console.log('swipeone');
	});

All’interno del nostro elemento #page_test, abbiamo un UL e vari elementi LI: vogliamo che, scorrendo con il dito sull’elemento della lista, venga effettuata una azione specifica.

Considerate che swipeone è diverso da swipetwo (scorrimento di un dito o di due dita).

Ricordatevi di richiamare i due oggetti event e obj all’interno della funzione di callback, altrimenti non potrete usufruire di varie informazioni quali la durata, il punto di partenza, la lunghezza in pixel dello scorrimento, etc.

Fate sempre riferimento alla documentazione ufficiale…e buona navigazione da mobile!

Cordova non funziona? Forse la soluzione è semplice…

Che vi siate approcciati a Cordova da molto tempo o che siate dei neofiti, probabilmente c’è un piccolo scoglio che dovrete superare: installare plugin e vederli non funzionare nel simulatore (o sul device reale).

Che la vostra app utilizzi un framework conosciuto come Ionic o React, oppure una interfaccia in javascript totalmente custom (come spesso faccio io per piccoli progetti low budget), dovrete passare per forza da Cordova per interfacciarvi con gli smartphone.

Fate estrema attenzione ad inserire (anche se non ne fate uso nella vostra applicazione) della libreria cordova.js, possibilmente prima della chiusura del tag .

<script type="text/javascript" src="cordova.js"></script>