Certificati OpenSSL in OpenSUSE

Cosa sono i Certificati?

I certificati in informatica servono per mille cose, fare da password, firmare documenti, crittografare, fare connessioni sicure, ecc. ecc.

In definitiva i certificati sono una stringa di lettere + numeri + simboli (insomma caratteri), di lunghezza variabile di solito 225 caratteri.

Nel caso password, avere una password di 225 caratteri è il massimo della sicurezza.

Nel caso di crittografia avere una chiave crittografica di 225 caratteri è allucinante per chi volesse forzare la decifrazione senza averla.

Nel caso di autenticazioni (esempio di un sito per vedere se è l’originale o documenti o altro), avere una che si basa su una chiave di 225 caratteri è allucinante falsificare.

Ecc. ecc. dato che di usi se ne possono contare ad migliaia!

Se poi è una combinazione di certificati tra di loro, vi rendete conto che la vita del cracker diventa impossibile!

Dove sono?

Qui la nota dolente….

In UNIX (salvo differenze tra loro) erano messi in posizione fissa con tools / comandi prefissati, mentre in Linux e altri OS le cose cambiano.

I certificati si usano tantissimo in internet…

Il problema dei certificati qui è un problema dei browser e non dei OS, quindi della Guerra tra Browser, anche se i certificati si usano da 40anni in informatica solo adesso e con l’avvento di IE6 che si fa un uso comune ed il primo IE che li usava correttamente e li metteva ad uso anche di altri programmi.

In effetti quando si va in gestione dei certificati in Windows vai in una schermata IE (oggi rinominato Edge), quando vai in KDE4 è Konquerror, anche se ora sia Gnome3 che KDE5 sono esternalizzati in programma proprio, ecc.

Firefox eredita da Netscape Browser il codice che poi non è mai cambiato e che già li metteva ad uso comune (ma in completa sicurezza) con altri programmi, tanto che fin che usci IE6 per usarli in Windows ad uso comune per l’utente dovevi installare Netscape Browser fin Mozilla Suite fin Firefox.

Chrome/Chromium ed altri (anche da IE6 ed Edge, insomma usciti dopo l’era 2000) usano quelli di “sistema operativo” (in verità del tools del “desktop”) tramite lo standard fatto da Netscape ed aggiornato dalla W3C e sostenuto da OpenSSL e Windows-standard.

In Windows grazie al Windows-standard vidi veri bagni di sangue con i certificati, quindi non lamentatevi troppo…

Questo è il guaio di Firefox che si porta dietro ancora il peso di un programma interno, spesso non aggiornato anche con il resto di Firefox stesso! Comodo se non disponi del tools dei certificati (anche perché disponibile per altri programmi), esempio se usi IceWM, ma inutile e macchinoso se usi Plasma. Il tools dei certificati è ora curato dai gestori dei WM/DE insomma dei “Desktop” che si basano su OpenSSL e Windows-standard.

In definitiva, non è un problema della versione di OpenSUSE per Firefox ma della versione di Firefox se funzionano bene, che poi da Quantum considero morto (io uso Firefox ESR piuttosto che Quantum per questo), dato che è diventato uno skin di Chrome e non più un vero Browser autonomo che oltretutto si porta dietro il peso (potevano fare dei addition e quindi disabilitarli e alleggerire Firefox) dei certificati, delle password ed altro.

Altro discorso SE alla Linux Foundation (LF) decidessero di integrare finalmente i certificati nel OS Linux come (forse problemi di copyright? Non vuol intromettersi in OpenSSL?) era per UNIX.

Dunque riassumendo quando dobbiamo cercare / modificare / aggiungere / ecc. i certificati sui programmi della Fondazione Mozilla (sono Firefox, Seamonkey, Thunderbird, ecc.), dobbiamo intervenire sui rispettivi programmi.

Ci sono poi programmi che hanno questi certificati per i fatti loro….

Invece per tutti gli altri in OpenSUSE li troviamo in

/etc/ssl

Nota: Non solo, ma vedrete in seguito.

Qui vediamo due directory “/etc/ssl/certs” (per i certificati standard) e “/etc/ssl/private” (per i certificati ad uso privato) e “/etc/ssl/certs” in realtà punta su “/var/lib/ca-certificates/pem” questo per garantire sempre la massima compatibilità tra i programmi che magari li cercano in zone diverse.

Seguono uno standard di scrittura il PEM, che è file di testo:

Esempio del contenuto del file certificato (Amazon_Root_CA_1.pem):

++—

-----BEGIN CERTIFICATE-----

MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF

ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6

b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL

MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv

b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj

ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM

9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw

IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6

VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L

93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm

jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC

AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA

A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI

U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs

N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv

o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU

5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy

rqXRfboQnoZsG4q5WTP468SQvvG5

-----END CERTIFICATE-----

++---

Noterete anche nomi di file con numeri che in realtà puntano su veri file con nomi, questo per garantire una doppia notazione e una ricerca più rapida.

Quindi i certificati li troviamo in

/etc/ssl

li troviamo anche in

/var/lib/ca-certificates/

Noterete che ci sono due file diversi nelle rispettive cartelle:

In “/etc/ssl” troviamo un link su “/var/lib/ca-certificates/ca-bundle.pem” e “openssl.cnf”, quest’ultimo troviamo tutta la configurazione di OpenSSL.

In “var/lib/ca-certificates/”, troviamo “ca-bundle.pem” che è il riassuntivo dei nomi e attributi dei certificati in formato PEM,

Per riportare l’esempio del certificato di Amazon è:

++---

Amazon Root CA 1

Identità: Amazon Root CA 1

Verificato da: Amazon Root CA 1

Scadenza: 17/01/2038

Nome soggetto

C (Paese): US

O (Organizzazione): Amazon

CN (Nome comune): Amazon Root CA 1

Nome emanatore

C (Paese): US

O (Organizzazione): Amazon

CN (Nome comune): Amazon Root CA 1

Certificato emesso

Versione: 3

Numero seriale: 06 6C 9F CF 99 BF 8C 0A 39 E2 F0 78 8A 43 E6 96 36 5B CA

Non valido prima del: 2015-05-26

Non valido dopo il: 2038-01-17

Impronte digitali certificato

SHA1: 8D A7 F9 65 EC 5E FC 37 91 0F 1C 6E 59 FD C1 CC 6A 6E DE 16

MD5: 43 C6 BF AE EC FE AD 2F 18 C6 88 68 30 FC C8 E6

Informazioni chiave pubblica

Algoritmo della chiave: RSA

Parametri della chiave: 05 00

Dimensione della chiave: 2048

Impronta digitale della chiave SHA1: 40 83 77 DD 67 5D 40 (....) 89 05
Chiave pubblica: 30 82 01 0(…...) 01

Vincoli di base

Autorità di certificazione: Sì

Lunghezza massima percorso: Illimitata

Critico: Sì

Utilizzo chiave

Utilizzi: Firma digitale
Firma elenco revoca

Critico: Sì

Identificatore chiave soggetto

Identificatore chiave: 84 18 CC 85 34 EC BC 0C 94 94 2E 08 59 9C C7 B2 10 4E 0A 08

Critico: No

Firma

Algoritmo di firma: 1.2.840.113549.1.1.11

Parametri della firma: 05 00

Firma: 98 F2 37 5(…...) B9

++—

Nota: messo (….) per stringarlo. Del resto è un esempio.

Ma anche “java-cacerts” che sono i nomi e attributi in formato Java-cert (un compattato) per l’uso rapido di Java e non solo dato che oramai Java pone standard usati anche da altri.

Vi siete persi? Ecco uno schema grafico di dove sono i file:

Nota: Nel rettangolo le cartelle, cerchi i file, mentre la cartell-link “certs” punta alla cartella “pem”.

Adesso non è mia competenza definire se è meglio standardizzare su una o l’altra, ma nel caso opto per “/var/lib/ca-certificates/” che debba contenere tutto.

Gestire OpenSSL

 

Qui ci sono centinaia di comandi OpenSSL da utilizzare, quindi vi rimando ad un buon manuale in italiano:

www.ucci.it/docs/ICTSecurity-2003-18a.pdf

https://www.iuculano.it/uni/Sicurezza/LS09-bis-OpenSSL.pdf

http://ocs.unipa.it/AL/al291.htm

 

Altri potete trovarli da soli con santo Google.

In OpenSUSE con Plasma (anche da altre parti) uso Kleopatra che dispone di anche una valida guida.

per Libre/OpenOffice invece scrissi un articolo qui:

LibreOffice firmare con certificato

OpenSSL dispone poi di ottimi comandi di linea, cosa è meglio della documentazione ufficiale?:

https://wiki.openssl.org/index.php/Command_Line_Utilities

 

Tipi di Certificati

 

Esistono vari tipi di certificati per vari usi.

Una prima catalogazione è per l’uso, quindi esistono certificati che funzionano come se fosse una password o crittografia semplice, quindi certificati unici.

Questi vengono inseriti come password semplici (al posto della password 12345 per capirci) per accedere su siti o per accedere su parti del disco, oppure per fornire la chiave lunghetta per il programma che crittografa un file.

Insomma io potrei usare il certificato di Amazon come password del sito esterno (magari Yahoo) dove tengo la posta, semplicemente ricopiandolo nel capo password di quel sito. Se qualcuno mi vuole fregare la password con il brute-force si troverà nel scovare una password di 225 caratteri, insomma muore prima di vecchiaia!

Però potrebbe adottare diverse tecniche per fregarmi lo stesso ecco perché è nata la doppia chiave!

In questo caso mi baso anche su un server esterno (tecnicamente anche sulla mia stessa rete, ma meglio uno che lo fa di servizio), io mi collego al suo server in modo sicuro (https o altro) che controlla che ogni accesso oppure crittografazione o altro, dato che una parte della chiave è in mio possesso e un altra in possesso di quel servizio, ma qui il nome “doppia chiave”. Dunque è inutile che violi il mio PC/Server ma deve violare anche il corrispondente computer di Servizio collegato (che poi quelli grossi sono controllati da altri certificati su altri servizi, quindi una disperazione per i ladri).

Spiegazione tecnica di Samuele Mati :

++-

Esiste la Chiave pubblica e quella privata.
La Chiave PUBBLICA (LA CONOSCONO TUTTI) e serve per CRIPTARE il messaggio (ma NON decripta)

La chiave PRIVATA (LA CONOSCE SOLO IL DESTINATARIO) serve per DECRIPTARE il messaggio (PRECEDENTEMENTE criptato con quella pubblica).

Esempio:

B vuole comunicare con A
– B, conosce la chiave pubblica di A e la usa per criptare il messaggio.
– A RICEVE il messaggio di B e lo DECRIPTA usando la sua chiave privata (cioè la chiave privata di A).

A vuole rispondere a B
-A conosce la chiave PUBBLICA di B e la usa per criptare la risposta.
– B riceve la risposta e usa la sua chiave PRIVATA per decriptare il messaggio.

In pratica, quando con SSH generi le chiavi, generi UNA COPPIA di chiavi (quella pubblica e quella privata), viene usato un algoritmo che si basa sull’uso dei NUMERI PRIMI (se lo cerchi su Google, lo trovi), per calcolare la chiave pubblica viene usato un algoritmo leggermente diverso rispetto a quello usato per la chiave privata, ma entrambi utilizzano come parametri GLI STESSI numeri primi, altrimenti, non riusciresti a decriptare il messaggio.

Questo, è argomento di 5° superiore istituto tecnico informatica.

PS. Questo sistema si chiama: Criptazione a CHIAVE ASIMMETRICA, in quanto, appunto, si usano 4 chiavi per comunicare (2 coppie di chiavi pubbliche e private) è più lenta rispetto alla criptazione a chiave simmetrica (ove gli interlocutori, condividono UNA SOLA chiave)…

In alcuni protocolli (ad esempio HTTPS) si usa la criptazione ASIMMETRICA (cioè chiave pubblica e privata) per scambiarsi una chiave SIMMETRICA e iniziare cosi, una comunicazione senza paura che la chiave sia “stata presa” da altri.

+++Perchè dicono spesso 4 Chiavi invece di 2?

Metti che tu voglia parlare con me…

Hai bisogno della MIA chiave pubblica per criptare il messaggio, io invece, avrò bisogno della MIA chiave PRIVATA per decifrarlo e comprenderlo (altrimenti, vedrei un pacco di simboli completamente inutile)…

Per risponderti (ed eventualmente dirti che ‘sto argomento mi ha fatto venire la nausea), avrò bisogno della TUA chiave pubblica, per inviarti la mia risposta in modo criptato…

Ovviamente, TU, per leggere il mio “vaffa” avrai bisogno della TUA CHIAVE PRIVATA, altrimenti leggeresti cose senza senso.

quindi, contiamole come farebbe un bambino:

Mia chiave privata=1+
Mia chiave pubblica=1+
Tua chiave privata=1+
Tua chiave pubblica=1=
Totale: 4 chiavi

++–

Anche HTTPS (HyperText Transfer Protocol over Secure Socket Layer) usa questo sistema (protocollo di crittografia asimmetrica) ed per questo che si imposta una connessione sicura con https (esempio https:\\www.miosito.it) invece del solito http per collegarsi ad un sito, in effetti collegandovi ad una Banca (per esempio) noterete che sarà collegata via web come https (altrimenti sappiate che è una fregatura, non esiste banca o assicurazione che non abbia SOLO HTTPS), quindi alla linguetta (qualche volta usano una immagine di un “lucchetto chiuso”) del vostro browser compariranno diverse informazioni della Banca e della connessone sicura ma non è la Banca che le invia ma il Servizio SSL collegato al sito della banca che riconoscendolo invia queste informazioni al vostro browser! Sappiate inoltre che la vostra trasmissione dati tra il server della banca e il vostro PC è crittografato.

Qualcuno si dirà ma allora perché non saltare anche la parte del login con l’introduzione dell’utente e password in quella banca se voglio controllare il mio Conto Corrente? Ebbene se il certificato lo tenete sul vostro PC qualcun altro potrebbe usarlo e quindi spacciarsi per voi, dato che Windows non possiede come OpenSUSE il Kwallet o simili preimpostato che potrebbe rendere difficoltoso l’accesso al certificato equivalente alla password per l’esempio della banca, logico che sia poco sicuro.

Però il Servizio dell’altra chiave può essere messo su smartcard! Sia il SSN (Servizio Sanitario Nazionale Italiano) che altri, come alcune Banche danno smartcard da inserire nel lettore apposito, e quindi da qui saltare la login e autenticazioni al sito successive!

Qui il problema è sempre Windows (lavorai per il SSN e derivati, non è per cattiveria verso Windows), Windows arrivò per ultimo OS alla gestione dei certificati e male (vedi precedenti di IE6), i driver per i lettori di smartcard funzionicchiano o non ci sono per quel windows, il browser Internet Explorer ora chiamato Edge con i certificati funziona male (nella maggioranza funziona tutto al primo colpo, altrimenti… Usare Chrome/Chromium) , poi bisogna fare una procedura di registrazione delle chiavi che l’utonto ovvero l’utente comune di Windows… impazzisce, poi si mette anche che Firefox che usa la sua, metti pure che windows non posside una utility di sistema per gestirli del tutto, ecc... Oddio anche in Linux pare che non ci sentano da questo orecchio, esempio cosa costa installare di base pcsc-lite?

Mettere questo repo sulla OpenSUSE 15:

http://download.opensuse.org/repositories/security:/chipcard/SLE_15/

 

Metodo facile d’installazione della smartcard

Di jambolo70

io con la versione Tumbleweed ho risolto seguendo questo post proprio ieri sera
http://trucchisuse.altervista.org/blog/installare-la-card-sanitaria-su-suse/

e finalmente mi ha iniziato a funzionare con la 42.2 non mi andava più e come smart card ho un Hamlet.

PS: per il programma CRS Manager per installarlo devi aprire il terminale
digitare

su
# poi la tua password
cd /Scaricati # (sempre che il file sia in questa directory)
chmod 777 CRSManager.run # (dai i permessi di scrittura,lettura ed esecuzione)
./CRSManager.run  # (installi il programma)

Una volta installato devi solo cercarlo all’interno del menu / Accessori
la prima volta che viene lanciato si aggiorna, poi puoi rilanciarlo.

La prima operazione da fare è quella di aprire Yast
– Gestione Pacchetti (una volta avviato il programma)
Configurazione
– Repository ( o CRTL+R)
dopo…
Aggiungi
Aggiungi i repository prima della comunità della chipcard

Attenzione se utilizzi la versione tumbleweed allora cambia con http://download.opensuse.org/repositories/security:/chipcard/openSUSE_Tumbleweed/
dai l’ok e conferma le varie chiavi che ti verranno date dei repository inseriti…
poi stampati in formato
PDF il link “trucchisuse”

Installare la card sanitaria su Suse


chiudi il browser e con la funzione cerca su yast cerca i vari file:


libpcsclite1,
pcsc-ccid, pcsc-acsccid, libopenct1, openct, pcsc-openct, opensc,
pcsc-lite, libtowitoko2, libacr38ucontrol0, pcsc-gempc, pcsc-tools,
pcsc-acr38, libpkcs11-helper1, pkcs11-helper

se ne hai qualcuno già installato di questi spuntalo lo stesso che faccia l’update/upgrade
una volta spuntati tutti accetta ed installa il tutto.
poi segui il terzo punto per attivare i servizi
da li in poi dovrebbe essere tutto in discesa, almeno spero per te…

Per attivare poi il servizio sul browser ad esempio non ho utilizzato la libreria segnalata ma

/usr/lib64/pkcs11/opensc-pkcs11.so

Mentre nella versione tumbleweed ho utilizzato

onepin-opensc-pkcs11.so

 

Conclusioni

 

Discutere approfonditamente esula da Trucchisuse in quanto blog d’informazione generale ma anche che esistono fiumi d’inchiostro di gente molto più preparata di me in rete, oltretutto è un campo dove si devono spendere miliardi di parole e io sono un poco scansafatiche!

Spero solo di avervi dato una infarinata e all’esperto informazioni di base per muoversi in OpenSUSE con i certificati.

 

Ciaoooooooooooooooooooooooooooooooooooooooooooooooo

 

Precedente GeckoLinux Successivo Come aggiornare OpenSUSE