In genere molti sviluppatori lavorano con il proprio computer e usano magari MAMP per far girare i propri siti web in locale, nel qual caso può sorgere il bisogno di testare i propri lavori anche con un certificato SSL e in https in localhost, vediamo come si può installare un certificato SSL utilizzando il proprio Mac Osx (in questo caso High Sierra 10.13.6), MAMP con Apache e Chrome.

Come installare un certificato SSL e usarlo con MAMP

Vediamo i passi da fare per poter installare un certificato SSL per lavorare con il proprio MAC in locale.

Installare MAMP

Se non lo avete installato, ovviamente il primo passo è installare MAMP. MAMP è una soluzione veloce per macOS e Windows per crearsi un ambiente di sviluppo locale. Combina i software che in genere troviamo nel server hosting per far girare il nostro sito web: Apache oppure NGINX e MySQL, PHP ed è una applicazione molto usata dagli sviluppatori in genere. Non mi dilungo su come installarlo, in rete si possono trovare migliaia di tutorial per questo.

Generazione di un certificato autofirmato per uso locale

Da Chrome 58, i certificati da utilizzare su localhost devono avere un nome alternativo soggetto SAN. Ottenere un certificato con le giuste proprietà può essere un compito scoraggiante, ma fortunatamente in rete si possono trovare delle soluzioni. La guida scritta da Alexander Zeitler può essere di aiuto per questo, bisogna usare un po' il terminale e la riga di comando, ma non dovrebbe essere troppo complicato seguendo le sue istruzioni.

Riassumiamo in pratica come si crea un certificato con SAN per localhost:

Generazione del certificato

Apriamo un terminale e digitiamo i comandi di seguito:

mkdir ~ / ssl /

che serve per creare una directory chiamata ssl nella cartella principale, fatto questo dobbiamo posizionarci nella directory creata digitando:

cd ~ / ssl

a questo punto creiamo un file chiamato server.csr.cnf . Ognuno userà il suo editor di testo preferito, io in questo caso sto usando vi e con un comando solo creo e apro il file:

vi server.csr.cnf

Appena vi compare il file vuoto e aperto digitate il comando i che attiva la modalità di inserimento dati dell'editor vi e quindi fate un copia e incolla o scrivete le seguenti informazioni (se avete interesse a capire di più sugli attributi di ogni campo dopo [dn] potete consultare questa guida di Oracle). Chiaramente potete modificare gli attributi a piacere per inserire quelli della vostra organizzazione:


[req]

default_bits = 2048

prompt = no

default_md = sha256

distinguished_name = dn

[dn]

C=US

ST=New York

L=Rochester

O=End Point

OU=Testing Domain

emailAddress=your-administrative-address@your-awesome-existing-domain.com

CN = localhost

Appena sicuri di aver copiato tutto e/o di avere scritto bene, per salvare il file, digitare prima il tasto ESCe poi

:wq

Seguito da invio. In questo modo si salva il tutto e si esce dalla modifica del file.

Ora abbiamo bisogno di creare un altro un file chiamato v3.ext

vi v3.ext

sempre all'apertura del file digitiamo il comando i per iniziare l'inserimento e copiamo il seguente contenuto:

authorityKeyIdentifier=keyid,issuer

basicConstraints=CA:FALSE

keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

subjectAltName = @alt_names

[alt_names]

DNS.1 = localhost

Come prima di nuovo digitiamo ESC per uscire dalla modalità inserimento e per salvare uscire di nuovo digitiamo:

:wq

Ora verifichiamo che i file siano nella directory digitando:

ls -la

Che mostrerà tutti i file nella directory ~/ssl/. E magari controlliamone il contenuto a video con il comando:

cat (nomedelfile)

per verificare di aver scritto bene tutto.

A questo punto siamo pronti per generare una chiave privata RSA, quindi digitiamo a terminale il seguente comando:

openssl genrsa -des3 -out ~ / ssl / rootCA.key 2048

Fatto questo Successivamente genereremo il certificato radice (root) che sarà valido per 1024 giorni:

openssl req -x509 -new -nodes -key ~ / ssl / rootCA.key -sha256 -days 1024 -out ~ / ssl / rootCA.pem

Successivamente andiamo a creare la chiave privata per il certificato (server.key):

openssl req -new -sha256 -nodes -out server.csr -newkey rsa: 2048 -keyout server.key -config <(cat server.csr.cnf)

Ed infine generiamo il certificato (server.crt):

openssl x509 -req -in server.csr -CA ~ / ssl / rootCA.pem -CAkey ~ / ssl / rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext

Se tutto è andato per il verso giusto abbiamo generato il nostro certificato SSL e verifichiamo che il certificato abbia la SAN digitando quanto segue nel terminale:

openssl x509 -text -in server.crt -noout

Diamo un'occhiata e controlliamo che ci sia contenuto questo testo:

X509v3 Subject Alternative Name:

DNS:localhost

Aggiungere rootCA.pem e server.crt all'elenco dei CA root attendibili

Prima che il certificato venga accettato dal browser, è necessario aggiungere sia rootCA.pem sia server.crt all'elenco dei CA root attendibili per il nostro Mac. La cosa si può fare aprendo Accesso portachiavi, per aprire Accesso Portachiavi bisogna aprire il Finder -> Applicazioni -> Utility -> Accesso Portachiavi , poi cliccare su "Sistema" e selezionare la categoria "Certificati".

Per aggiungere i due files rootCA.pem e server.crt, apriamo un'altra cartella del Finder, cerchiamo la cartella ~/ssl che abbiamo precedentemente creato quindi trasciniamo i due files, uno per volta, all'interno dell'Accesso Portachiavi che nel frattempo abbiamo lasciato aperto. Quindi li vedremo entrambi comparire nel portachiavi.

Ma non basta. Perché il certificato funzioni, dobbiamo assicurarci che il certificato sia attendibile. Per fare ciò, facciamo doppio clic nel certificato 'localhost' e poi nella nuova finestra che si sarà aperta, espandiamo 'Attendibilità' e nel campo 'Quando si usa questo certificato' selezioniamo 'Fidati sempre', all'uscita dal menu e il certificato dovrebbe apparire con una iconcina + su sfondo verde. Fatto!

Siamo pronti per configurare Apache!

Configurazione di Apache per SSL

I file di configurazione di Apache che dobbiamo configurare per l'uso del certificato sono:

httpd.conf che si trova nella directory /Applications/MAMP/apache/conf/httpd.conf e httpd-ssl.conf situato in /Applications/MAMP/apache/conf/extra/httpd-ssl.conf.

Forse è inutile dirlo, ma meglio fare un backup della tua configurazione attuale ovvero dei due files prima di continuare!

Configurazione di httpd.conf

Per prima cosa aprire il file httpd.conf e se sono commentate, rimuovere il commento dalle seguenti righe o accertarsi che non lo siano:

LoadModule ssl_module modules / mod_ssl.so

Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf

È possibile che queste righe non siano presenti nel qual caso aggiungetele al file.

Quindi impostare Servername su localhost 443 (assicurarsi che nel file sia definito un solo Servername)

Servername localhost:443

Per il file httpd.conf queste sono tutte le modifiche che servono

Configurazione di httpd-ssl.conf

Quindi, nel file httpd-ssl.conf, procedete come segue:

Impostate il comando Listen

Listen 443

Poi trovate nel file la configurazione di virtualhost che assomiglia a questa:

# General setup for the virtual host
DocumentRoot “/Applications/MAMP/Library/htdocs”
ServerName localhost:443
ServerAdmin you@example.com
ErrorLog “/Applications/MAMP/Library/logs/error_log”
TransferLog “/Applications/MAMP/Library/logs/access_log”

# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine off

Solo un paio di cose devono essere cambiate in questa configurazione. Innanzitutto, VirtualHost dovrebbe essere impostato su *:443, anziché su _default_:443. E assicuratevi che DocumentRoot sia corretto per la vostra configurazione. ServerName deve essere modificato in localhost:443. Infine, SSLEngine deve essere acceso. Il risultato dovrebbe apparire in questo modo:

# General setup for the virtual host
DocumentRoot “/Applications/MAMP/htdocs”
ServerName localhost
ServerAdmin you@example.com
ErrorLog “/Applications/MAMP/Library/logs/error_log”
TransferLog “/Applications/MAMP/Library/logs/access_log”

# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on

Ora per il corretto funzionamento è necessario copiare i files SSL creati precedentemente dalla directory ~/ssl alla directory /Applications/MAMP/conf/apache e non ci sarà bisogno di altre modifiche nel file httpd-ssl.conf

E' possibile copiare il file server.crt e server.key in un'altra directory, ma è necessario assicurarsi di definire il percorso giusto in httpd-ssl.conf.

Visitate in chrome https://localhost per vedere se la cosa funziona:

OK! Questo è tutto! Ora dovreste avere un ambiente di sviluppo locale con SSL!

Risoluzione dei problemi

Se vi sorgono dei problemi o trovate degli errori o la cosa non vi funziona, ci sono alcuni accorgimenti utili per scovare gli errori. Una è quella di cercare possibili duplicati di configurazione che creano conflitti eseguendo il seguente comando nel Terminale:

grep -r listen /Applications/mamp/conf

Questo mostrerà tutte le istanze in 'ascolto' nella directory di configurazione di MAMP.

Altro problema: una volta risolto l'errore, il certificato SSL funziona, ma tutte le richieste https://localhost hanno provocato un errore 404. Questo errore in genere si puà verificare perché "DocumentRoot" è stato definito due volte, sia in httpd.conf che in httpd-ssl.conf. La rimozione di "DocumentRoot" da httpd-ssl.conf dovrebbe risolvere questo problema.

La cosa a volte più noiosa, è successo anche a me, è che lanciando MAMP dal suo pannello grafico Apache non parte, e addirittura non scrive l'errore nei logs, questo è un bug di MAMP, che spero risolvano, ovvero Apache, purtroppo, non scrive tutti gli errori nel file apache_error.log nella directory /Applications/MAMP/logs/.
Se ciò accade, e come ho detto è già successo e può accadere, si può provare a riavviare Apache tramite il Terminale usando questo comando:

sudo /Applications/MAMP/Library/bin/apachectl restart

oppure

sudo /Applications/MAMP/Library/bin/apachectl start

In questo modo Apache mostrerà errori a terminale che non sono arrivati ​​al file di registro, dandovi delle indicazioni utili per la risoluzione di eventuali problemi.

Uno degli strumenti più utili per i webmaster, gli sviluppatori e i proprietari di siti di ogni tipo è Google PageSpeed Insights. Ma questa utility messa a disposizione da Google è diventata molto famosa e molti si sono fatti ossessionare dal punteggio ricavato ottimizzando il proprio sito e passano delle ore per cercare di ottenere il punteggio di 100/100 in questo test.

La verità è che questa è una perdita di tempo o tantomeno non è un lavoro utile perchè non è esattamente questo il modo in cui va utilizzato Google PageSpeed. Bisognerebbe invece concentrarsi sulle raccomandazioni che questo utilissimo strumento vi propone per il Vostro sito web invece di cercare di ottenere il risultato con il numero in cima alla pagina e sicuramente si avranno molti più vantaggi per il sito web.

Molti pseudo webmaster o peggio, pseudo sviluppatori scrivono articoli web su come ottenere il punteggio cento per cento da Google Pagespeed, millantando di aver ottenuto tale punteggio con immagini più o meno truccate, ma la verità è un pochino anzi molto diversa.

Ottenere il punteggio di 100 per 100 su Google Pagespeed è molto difficile, anzi direi impossibile e sfido qualcuno con un sito vero con dei contenuti vero che l'abbia raggiunto, mi scriva pure e mi dimostri che è vero.

E' difficile persino con una sola landing page, figuriamoci con un sito web, e con un CMS tipo WordPress o altro diventa un progetto complesso che solo chi è uno sviluppatore esperto può ottenere, e non sempre, dal momento che in un sito web sono presenti tutta una serie di fattori che influenzano il risultato finale in questo senso: progetto grafico, codice, contenuti, realizzazione.

Personalmente ho pensato che la cosa migliore è prima fare, costruire, verificare per riuscire ad ottenere e poi, eventualmente, condividere e suggerire come fare.

Per questo non ho realizzato un articolo, o meglio l'ho fatto, ma per dire che ho invece realizzato un apposito sito web, dove ottengo un risultato quanto più lusinghiero e condivido consigli utili su come poter ottenere il massimo punteggio di cento per cento su Google Pagespeed.

Per chi vuole saperne di più ed approfondire questo argomento lo condivido: PAGESPEED 100 x 100.

Se invece vuoi realizzare un ottimo risultato con il tuo sito ed hai bisogno di uno sviluppatore WordPress che lo sappia fare veramente CHIAMAMI. Analizzerò il tuo sito e potrò fare il lavoro in modo onesto, con risultati certificati e verificabili.

A volte, nello sviluppo di alcuni siti, può accadere cosi come è accaduto a me di avere l'esigenza di escludere il caricamento di uno o più scripts una specifica versione di Internet Explorer, per problemi di compatibilità.

Internet Explorer
(altro…)

Riassumendo, abbiamo il nostro strumento software Sitebuilder = auto normale, che ci può consentire di raggiungere la nostra meta: costruire un sito web. Ovvero gli obiettivi finali che abbiamo tenuto sempre bene a mente, del nostro sito Web. Possiamo definire il layout grafico del sito, anche con un autoguida, scegliendolo tra oltre 500 templates preimpostati ed avendo la libertà di personalizzare, colori, caratteri, intestazione, piè di pagina e quanto altro possa servire per dare la nostra personalissima impronta al nostro sito web, senza conoscere nessuna riga di codice e completamente guidati nella nostra lingua, in italiano, cosa da non sottovalutare.

Mentre facciamo tutto questo, o anche in un secondo tempo, per costruire un sito web, salvando preventivamente il lavoro possiamo aggiungere una serie di applicazioni che valorizzeranno il nostro sito rendendolo professionale e facile da usare dai visitatori.

(altro…)
Copyright © 2023 - P. Iva 02677660546


Another project made with

by Marco Brughi
Città di Castello - Perugia - Arezzo - Firenze
Privacy Policy Cookie Policy
heart