How-To:UseSslCerts

From Nxt Wiki
Jump to: navigation, search
This page is a translated version of a page How-To:UseSslCerts and the translation is 100% complete.

Other languages: English 100% • ‎español 19% • ‎italiano 100% • ‎русский 6%

È possibile usare certificati oltre a quello incluso in NRS per la configurazione di Jetty. Puoi utilizzare un certificato ufficiale ottenuto da una CA (rapidssl/verisign/etc) a pagamento, o gratuitamente se ne crei e usi uno firmato da te stesso. Un certificato firmato da te mostrerà comunque un avvertimento, ma avendolo generato tu puoi fidarti. È considerata CATTIVA PRASSI fidarsi di certificati SSL firmati di default, specialmente non sapendo chi abbia le chiavi private di quel certificato.

Certificato Autofirmato

1. Genera un certificato autofirmato. Questo comando 'openssl' ti chiederà delle informazioni, completale. Puoi usare qualsiasi periodo in giorni per definire quanto a lungo il tuo certificato sarà valido.

openssl req -new -x509 -out mycert.crt -days 1095

chmod 400 privkey.pem

chmod 400 mycert.crt

2. Converti il tuo certificato in formato pkcs12 come richiesto dal web server Jetty. Questo comando ti chiederà una password per l'esportazione. Questo deve essere non nullo.

openssl pkcs12 -export -inkey privkey.pem -in mycert-key -out mycert.pkcs12

chmod 400 mycert.pkcs12

3. Genera un nuovo file keystore per Jetty. La configurazione per Jetty in NRS definisce la password di default come 'storepwd' per il keystore, quindi utilizzeremo questa. (è comunque una buona idea definirne una diversa e riconfigurare Jetty con la nuova password, ma questo va al di là dello scopo di questo articolo, quindi utilizzeremo 'storepwd'. Vedi https://wiki.eclipse.org/Jetty/Howto/Configure_SSL#Configuring_Jetty e il file jetty-ssl.xml disponibile nella tua versione di NRS per utilizzare una password diversa. Il comando keytool ti chiederà una password.) Usa 'storepwd' ogni volta.

keytool -importkeystore -srckeystore mycert.pkcs12 -srcstoretype PKCS12 -destkeystore keystore

4. (solo per versione 0.7.x e precedenti) Al punto 3 il file keystore è stato creato nella cartella locale. Spostalo e rimpiazza il keystore usado da NRS di default che si trova in nxt/etc/keystore e successivamente modifica il file nxt/etc/jetty-ssl.xml e rimuovi le 3 linee:

<Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="OBF:1u2u1wml1z7s1z7a1wnl1u2g"/></Set>

<Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/keystore"/></Set>

<Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>

4b. (solo per versione 0.8.x e successive) Al punto 3 il file keystore è stato creato nella cartella locale. Spostalo nella cartella nxt e come ultimo step modifica (o crea se non esiste) il file nxt/conf/nxt.properties e inserisci quanto segue:

nxt.uiSSL=true
nxt.apiSSL=true
nxt.keyStorePassword=storepwd

Certificato firmato da CA

1. Genera un CSR (certificate signing request). Questo comando 'openssl' ti chiederà delle informazioni, completale.

openssl req -new -out mycert.csr

chmod 400 privkey.pem

chmod 400 mycert.csr

2. Invia questo file CSR, mycert.csr, a chiunque tu desideri sia la tua autorità di certificazione. Ti rispediranno il certificato una volta che l'hanno firmato. Potrebbero (oppure no) spedirti un certificato intermediario e/o un certificato root. Rinomina il certificato che ti hanno spedito da usare per il tuo server come mycert.crt e assicurati di applicare chmod 400 a tutti i file ricevuti.

2b. SE il tuo CA ti ha dato dei certificati addizionali (intermediari/root) da usare in combinazione al certificato per il server che hanno firmato, utilizza il comando cat seguente e prendi nota che l'ordine dei file hanno precedenza. Innanzitutto il certificato del server che il CA ha firmato, successivamente qualsiasi certificato intermediario (fai attenzione che i certificati intermediari hanno pure un proprio ordine) e per ultimo il certificato root, sempre se il tuo CA te ne ha inviato uno.

cat mycert.crt intermediate1.crt intermediate2.cert rootCA.cert > cert-chain.txt

chmod 400 cert-chain.txt

3. Converti il certificato in formato pkcs12 come richiesto dal web server Jetty. Questo comando ti chiederà una password per l'esportazione. Questo non può essere senza valore. Se non hai certificati intermediari/root allora hai saltato il punto 2b sopra e quindi non hai un file cert-chain.txt, in questo caso usa mycert.crt come parametro '-in' invece che cert-chain.txt

openssl pkcs12 -export -inkey privkey.pem -in cert-chain.txt -out mycert.pkcs12

chmod 400 mycert.pkcs12

4. Genera un nuovo file keystore per Jetty. La configurazione per Jetty in NRS definisce la password di default come 'storepwd' per il keystore, quindi utilizzeremo questa. (è comunque una buona idea definirne una diversa e riconfigurare Jetty con la nuova password, ma questo va al di là dello scopo di questo articolo, quindi utilizzeremo 'storepwd'. Vedi https://wiki.eclipse.org/Jetty/Howto/Configure_SSL#Configuring_Jetty e il file jetty-ssl.xml disponibile nella tua versione di NRS per utilizzare una password diversa.) Il comando keytool ti chiederà una password. Usa 'storepwd' ogni volta.

keytool -importkeystore -srckeystore mycert.pkcs12 -srcstoretype PKCS12 -destkeystore keystore

5a. (solo per versione 0.7.x e precedenti) Al punto 4 il file keystore è stato creato nella cartella locale. Spostalo e rimpiazza il keystore usado da NRS di default che si trova in nxt/etc/keystore e successivamente modifica il file nxt/etc/jetty-ssl.xml e rimuovi le 3 linee:

<Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="OBF:1u2u1wml1z7s1z7a1wnl1u2g"/></Set>

<Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/keystore"/></Set>

<Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>

5b. (solo per versione 0.8.x e successive) Al punto 4 il file keystore è stato creato nella cartella locale. Spostalo nella cartella nxt e come ultimo step modifica (o crea se non esiste) il file nxt/conf/nxt.properties e inserisci quanto segue:

nxt.uiSSL=true
nxt.apiSSL=true
nxt.keyStorePassword=storepwd