The Official Way
Il certificato è un valido identificativo legale per una persona / azienda / agenzia. Come per qualsiasi documento formale, devi ottenerlo da un'autorità di certificazione ufficiale. Ci sono molti.
Come sviluppatore devi ottenere da loro almeno 2 certificati: uno per il tuo server e uno per te come client. Per averli devi fare una requisizione. Quando lo fai, ti verrà concesso il certificato e il file della tua chiave privata per ogni certificato.
Dopo questo processo legale puoi installarlo sul tuo server Apache in questo modo:
- Prima si installa la catena di certificati nel server. Questi sono alcuni certificati, disponibili pubblicamente dalla CA (autorità di certificazione).
- Questa catena può essere solo un certificato radice o molti.
- Se ce ne sono molti li metti tutti insieme in un file. Ci sono altri modi, ma io
trovato questo per essere migliore.
Quindi aggiungi queste linee alla configurazione di apache:
SSLEngine on
SSLOptions +StdEnvVars +ExportCertData
SSLCertificateFile /home/<youruser>/<yourCertFolder>/server.crt #server file
SSLCertificateKeyFile /home/<youruser>/<yourCertFolder>/server.key #server private key
SSLCertificateChainFile /home/<youruser>/<yourCertFolder>/rootCA.crt #server certificate chain
SSLCACertificateFile /home/<youruser>/<yourCertFolder>/rootCA.crt #server CA certicate file (if you're in the test process below, should be the same file above)
SSLVerifyClient require
SSLVerifyDepth 10
- Vai al tuo browser e importa la catena di certificati della CA che ha emesso i certificati.
- Importa il tuo certificato personale. Ci sono alcuni tipi di certificato. Se hai acquistato certificati A1 (file), devi semplicemente importarlo nel browser. Se hai acquistato un token A3 (come una chiavetta USB ma per i certificati) devi prima caricare il driver nel browser e poi lo importerà automaticamente quando entri in un sito abilitato SSL.
- Il certificato che stai utilizzando nel browser deve avere la stessa catena di certificati di quella utilizzata dal server o il server non sarà in grado di convalidarlo.
- Dopodiché dovresti vedere una finestra che ti chiede di selezionare la tua cerficazione quando entri nel sito.
Molte cose eh? credimi, imparare questo è stato un processo duro.
The Test Way
Ma c'è qualcosa che puoi usare come processo di test. È possibile creare la propria CA ed emettere i propri certificati localmente nel server e nella macchina di sviluppo. Ecco come lo fai:
Prima installazione openssl nel tuo computer se non è già installato. Quindi usa questi script:
Crea certificato CA e server:
#/bin/bash
echo "Create CA private key"
openssl genrsa -des3 -passout pass:123 -out ./rootCA.key 2048
echo "Remove passphrase"
openssl rsa -passin pass:123 -in ./rootCA.key -out ./rootCA.key
echo "Create CA self-signed certificate"
openssl req -config openssl.cnf -new -x509 -subj '/C=US/L=Dev/O=COMPANY/CN=CA' -days 99999 -key ./rootCA.key -out ./rootCA.crt
echo "Create private key for the server"
openssl genrsa -des3 -passout pass:123 -out ./server.key 2048
echo "Remove passphrase"
openssl rsa -passin pass:123 -in ./server.key -out ./server.key
echo "Create CSR for the server"
openssl req -config ./openssl.cnf -new -subj '/C=US/L=Dev/O=COMPANY/CN=server' -key ./server.key -out ./server.csr
echo "Create certificate for the server"
openssl ca -batch -config ./openssl.cnf -days 999 -in ./server.csr -out ./server.crt -keyfile ./rootCA.key -cert ./rootCA.crt -policy policy_anything
emissione di certificati:
#!/bin/bash
if [[ -z "$1" || -z "$2" ]]; then
echo "Use: issueCertificate <NAME>"
exit
fi
NAME=$1
DN="/C=US/L=Dev/O=COMPANY/CN=$1"
ARQ="${NAME//[[:space:]]/}"
echo -e "\nCreating folder... "
mkdir $ARQ
echo "done."
echo -e "\nCreating private key... "
openssl genrsa -des3 -passout pass:123 -out ./$ARQ/$ARQ.key 2048
echo "done."
echo -e "\nRemoving password..."
openssl rsa -passin pass:123 -in ./$ARQ/$ARQ.key -out ./$ARQ/$ARQ.key
echo "done."
echo -e "\nCreating CSR... "
openssl req -config ./openssl.cnf -new -subj "$DN" -key ./$ARQ/$ARQ.key -out ./$ARQ/$ARQ.csr
echo "done."
echo -e "\nCreating client certificate"
openssl ca -batch -config ./openssl.cnf -days 999 -in ./$ARQ/$ARQ.csr -out ./$ARQ/$ARQ.crt -keyfile ./rootCA.key -cert ./rootCA.crt -policy policy_anything
echo "done."
echo -e "\nExport client to pkcs12 and import in browser"
openssl pkcs12 -export -passout pass:123 -in ./$ARQ/$ARQ.crt -inkey ./$ARQ/$ARQ.key - certfile ./rootCA.crt -out ./$ARQ/$ARQ.p12
echo "done."
Quindi immagino sia tutto. Devo tradurre alcune cose e cambiare alcuni nomi e costanti var per rimuovere il nome della mia azienda e l'intero processo è piuttosto complesso. Quindi mi scuso se ho dimenticato qualcosa o qualcosa non funziona. Si prega di informare e correggerò prontamente.
Buona fortuna. :)