Archivi categoria: Debian

Debian è il sistema operativo universale: una tre le prime distribuzioni di Linux, che continua ad essere ai massimi livelli e che non ha una azienda privata alle spalle.

Appunti su come creare una CA e un certificato server con il KeyTool di Java

Queste sono note veloci da sistemare, ma possono già aiutare eventualmente altri, quindi le pubblico qui. Per semplicità la password dei keystore e delle chiavi è sempre la stessa, ma in alcuni casi deve essere veramente la stessa, ad esempio quando si deve usare il keystore generato in un connettore di Apache Tomcat.

Le cose importanti da notare sono: il certificato della CA deve avere il BasicConstraint che indica che è una CA. Non si tratta di un vincolo tecnico, ma i browser potrebbero poi non accettarlo come affidabile. Il certificato del server deve avere il KeyUsage corretto, altrimenti anche lui potrebbe essere scartato. Il comando per la generazione del certificato iniziale del server avrà quindi varie -ext .... per aggiungere le estensioni, che dovranno essere ricopiate identiche nel punto dell’emissione del certificato per il server da parte della CA.

  • Creazione di chiave privata e certificato radice per l’autorità, valido 7350 giorni (circa 20 anni). Questo viene messo nel keystore predefinito di java, nella home dell’utente, in un file chiamato .keystore e protetto da una password relativamente semplice. Il comando è: keytool -alias root -dname "CN=RootCA, OU=La mia unità organizzativa, O=La mia società, L=La mia località, ST=La mia provincia, C=IT" -genkeypair -storetype PKCS12 -storepass fs35623_WE -keypass fs35623_WE -keyalg RSA -keysize 4096 -validity 7350 -ext BasicConstraints=ca:true,PathLen:2 -ext KeyUsage=digitalSignature,keyEncipherment,keyCertSign -ext ExtendedKeyUsage=serverAuth,clientAuth
  • Creazione di chiave privata e certificato radice per il server, valido 7350 giorni (circa 20 anni). Questo viene messo nel keystore chiamato server.pfx e protetto da una password relativamente semplice. Il comando è: keytool -alias server -dname "cn=server.example.com, OU=La mia unità organizzativa, O=La mia società, L=La mia località, ST=La mia provincia, C=IT" -genkeypair -storetype PKCS12 -storepass fs35623_WE -keystore server.pfx -keypass fs35623_WE -keyalg RSA -keysize 4096 -validity 7300 -ext SAN=DNS:server.example.com -ext ExtendedKeyUsage=serverAuth -ext KeyUsage=digitalSignature,keyEncipherment
  • Copia temporanea del certificato della CA dal keystore predefinito di java a quello nel quale c’è il certificato del server. Il comando è: keytool -export -alias root -storetype PKCS12 -storepass fs35623_WE | keytool -import -alias root -storetype PKCS12 -keystore server.pfx -storepass fs35623_WE -noprompt -trustcacerts
  • Generazione della richiesta di firma del serve del certificato, che viene poi passata al comando per l’emissione del certificato da parte della CA, che viene poi passato al keystore origiario per essere memorizzato. Il comando è: keytool -alias server -certreq -storetype PKCS12 -storepass fs35623_WE -keyalg RSA -keystore server.pfx | keytool -alias root -gencert -storetype PKCS12 -storepass fs35623_WE -keyalg RSA -ext SAN=DNS:server.example.com -ext ExtendedKeyUsage=serverAuth -ext KeyUsage=digitalSignature,keyEncipherment -validity 7300 | keytool -alias server -importcert -storetype PKCS12 -storepass fs35623_WE -keyalg RSA -keystore server.pfx -noprompt -trustcacerts
  • Rimozione del certificato della CA dal keystore del server. Il comando è: keytool -delete -alias root -storetype PKCS12 -keystore server.pfx -storepass fs35623_WE
  • Esportazione del certificato della CA in un file, da importare nei sistemi che dovranno considerarlo affidabile. Il comando è: keytool -export -alias root -storetype PKCS12 -storepass fs35623_WE -rfc > root.pem

Cable Matters — Adattatore da USB a Ethernet 2,5G

Ho un computer ASUS ZenBook 14″ che non ha una scheda di rete cablata. Ha ovviamente il Wi-Fi (802.11ac), ma pur connesso ad un buon access point, non raggiunge le prestazioni che uno si aspetterebbe. Il portatile è fornito di un adattatore da USB a Ethernet da 1000mbit/s, che funziona bene ma volevo cambiarlo in previsione del passaggio alla connessione Internet da 2,5Gbit/s. L’ASUS ha varie porte USB, delle quali le due sulla sinistra sono 3.2 Gen 2, che dovrebbero raggiungere la stratosferica velocità di 10gbit/s. Ho quindi acquistato un adattatore da USB a Ethernet, e già che c’ero, ho preso quello che supporta i 2,5gbit/s che si stanno diffondendo nelle case grazie alla connessione in fibra FTTH. Quello che ho preso è della Cable Matters, con attacco Type-A e Type-C, entrambi presenti sul portatile. Ho collegato l’adattatore e l’ho provato sia con Debian GNU/Linux 11 che con Microsoft Windows 11, arrivando alle stesse prestazioni.

Continua a leggere

Linux e chip audio ALC294 su Asus ZenBook 14 UM433DA / UX434DA

Un po’ più di anno fa ho acquistato uno ZenBook 14 UX434DA per un ragazzino che doveva usarlo per la scuola. Gil ho ho montato, oltre al Windows preinstallato, Linux Debian sul quale ho avuto molte difficoltà con l’audio: a volte funzionava, altre volte era completamente muto, altre volte si sentivano rumoracci. Chiaramente con questi problemi non era possibile partecipare alle lezioni a distanza con Google Meet.

Ho fatto parecchi aggiornamenti, passando dalla Debian 10 alla 11, ho spulciato decine (centinaia?) di forum, ho studiato il chipset e il driver linux. Ci sono molte indicazioni su: lo stato del chip viene lasciato inadeguato da Windows quando questo viene sospeso e poi si passa a Linux, il volume ha solo le possibilità spento e massimo, il modulo del kernel richiede un parametro per far riconoscere esattamente quale chipset c’è su questo portatile, eccetera. Tutto vano.

Questo fine settimana ho ripreso in mano il portatile deciso ad averla vinta su lui.

Continua a leggere

Analisi di problemi su squid

Quando c’è un problema con squid, io non so mai che pesci pigliare. Per evitare di fare sempre le stesse ricerche e trovare le stesse risposte, nonché per delineare una modalità di indagine, aggiornerò questo articolo ad ogni nuova occasione.

squid impiega parecchio tempo per avviarsi, ma a volte, se si fanno solo modifiche alla configurazione, si può evitare di riavviarlo mandando il segnale per la rilettura del file di configurazione.

# systemctl restart squid # riavvio completo
# squid -k reconfigure # rilegge la configurazione

Access log

Il principale file di log è quello che mostra tutte le richieste che ha ricevuto e la risposta che ha dato. Il file è /var/log/squid/access.log e contiene righe fatte così:

1611652062.938 1 192.168.215.45 TCP_DENIED/403 4044 CONNECT cdn-gl.imrworldwide.com:443 - HIER_NONE/- text/html
1611652065.142 63192 192.168.215.45 TCP_TUNNEL/200 1671 CONNECT outlook.office365.com:443 - HIER_DIRECT/40.101.137.66 -

Il primo numero è una marca temporale non formattata. Per sapere veramente a che ora si riferisca si può usare il comando date così

# date --date @1611652073.326
mar 26 gen 2021, 10.07.53, CET

il secondo numero è il tempo, in millisecondi, impiegato da squid per rispondere al client dopo aver svolto l’operazione

il terzo campo è l’IP del client

il quarto campo è l’esito. Gli esiti maggiormente diffusi sono:

  • TCP_DENIED/403, indica che la richiesta è stata rifiutata con codice HTTP 403
  • TCP_TUNNEL/200, indica che la richiesta di apertura di un tunnel è stata accetta con codice HTTP 200
  • TAG_NONE/503, indica un errore interno di quid, ad esempio che non riesce a risolvere il nome con il DNS

il quinto campo è il metodo HTTP richiesto dal client: GET, POST, HEAD, CONNECT

il sesto campo è la coppia nome host e porta da contattare.

Cache log

Questo secondo file di log è /var/log/squid/cache.log e contiene informazioni aggiuntive. Ci sono le informazioni di debug che vengono scritte in base alla direttiva debug_options. Normalmente contiene solo le segnalazioni di problemi. Per avere un po’ più di informazioni, aggiungere:

debug_options ALL,2

al file di configurazione /etc/squid/squid.conf e farlo rileggere a squid. Ci si possono trovare informazioni come questa:

2021/01/26 09:43:04.511 kid1| 85,2| client_side_request.cc(744) clientAccessCheckDone: The request CONNECT mail.google.com:443 is ALLOWED; last ACL checked: localnet
 2021/01/26 09:43:04.511 kid1| 85,2| client_side_request.cc(720) clientAccessCheck2: No adapted_http_access configuration. default: ALLOW
 2021/01/26 09:43:04.511 kid1| 85,2| client_side_request.cc(744) clientAccessCheckDone: The request CONNECT mail.google.com:443 is ALLOWED; last ACL checked: localnet
 2021/01/26 09:43:04.511 kid1| 44,2| peer_select.cc(258) peerSelectDnsPaths: Find IP destination for: mail.google.com:443' via mail.google.com
 2021/01/26 09:43:04.511 kid1| 44,2| peer_select.cc(280) peerSelectDnsPaths: Failed to select source for 'mail.google.com:443'
 2021/01/26 09:43:04.511 kid1| 44,2| peer_select.cc(281) peerSelectDnsPaths:   always_direct = DENIED
 2021/01/26 09:43:04.511 kid1| 44,2| peer_select.cc(282) peerSelectDnsPaths:    never_direct = DENIED
 2021/01/26 09:43:04.511 kid1| 44,2| peer_select.cc(295) peerSelectDnsPaths:        timedout = 0
 2021/01/26 09:43:04.511 kid1| 4,2| errorpage.cc(1261) BuildContent: No existing error page language negotiated for ERR_DNS_FAIL. Using default error file.

che indicano una richiesta di apertura di un tunnel verso mail.google.com che viene inizialmente accettata tramite le ACL, ma poi rifiutata per un problema del DNS usato da squid.

Aggiornamento di Jitsi: sala d’attesa e co-moderatori

Quest’anno ho messo un server Jitsi a disposizione di chiunque lo voglia usare. Si tratta di un sistema per le video chiamate che ho attivato nell’ambito del progetto iorestoacasa.work che, nell’ottica di affrontare meglio la pandemia di Covid-19 del 2020, offre servizi di video chiamata gratuiti a tutti. Lo potete usare qui, con un semplice browser o con l’app Jitsi Meet che potete scaricare dalla pagina principale del sito.

A inizio dicembre ho aggiornato la macchina, passando dalla versione stabile (rilasciata il 14 ottobre 2020, non molto tempo prima) a quella in via di sviluppo. Come il nome fa già capire, questa versione ha funzionalità più nuove, ma è stata sottoposta a controlli minori; ma pare che funzioni a dovere e ha, tra le altre, due nuove funzionalità importanti:

  • la parte del moderatore non è solo di chi apre la stanza, ma può essere assegnata anche ad altri. Un moderatore può selezionare il riquadro del video di un partecipante e aprire il menu contestuale. Lì si trova l’opzione per dare il diritto di moderatore al partecipante;
  • c’è la sala d’attesa. Per proteggere l’accesso alle stanze era già possibile impostare una password (ed è tuttora possibile), ma se un partecipante spiritoso la comunica ad altri meno divertenti, questi si potrebbero collegare alla stanza per disturbare. La sala d’attesa è un posto nel quale finiscono tutti i nuovi arrivati, che vanno ammessi da uno dei moderatori, manualmente. In questo modo è possibile controllare chi si collega (c’è un nome e, eventualmente anche l’email).