Download - Autenticazione SSL su Apache

Transcript
Page 1: Autenticazione SSL su Apache

5/13/2018 Autenticazione SSL su Apache - slidepdf.com

http://slidepdf.com/reader/full/autenticazione-ssl-su-apache 1/6

 

CP pensare–progettare–programmare — n. 136 — giugno 2004

Autenticazione SSL su Apachedi Massimo Nardone

In quest’articolo mostreremo come autenticare un utente Web, munitodi Certificato SSL, per una determinata risorsa del Server HTTP Apache

Massimo Nardone

E laureato in Scienzedell’Informazione pressol’Universita di Saler-

no. Si e occupato diSicurezza, Mobile edimplementazioni Webper molti anni comeSecurity Chief Architect,Research and Soft-ware Engineer pressoun’azienda di Teleco-municazioni Finlandese.Ha collaborato inoltrecome revisionatore tec-nico per molti libri sulla

sicurezza. Attualmentelavora come TechnicalAccount Manager, Pro-

 ject Manager e SecuritySpecialist per un’a-zienda di servizi MobileFinlandese. Si occupainoltre di ricerca edimplementazione perla sicurezza dei proto-colli come assistente esupervisore delle eser-citazioni per l’esamedi ”Security of Com-munication Protocols”presso l’Helsinki Uni-versity of Technology(HUT) in Finlandia.

Page 2: Autenticazione SSL su Apache

5/13/2018 Autenticazione SSL su Apache - slidepdf.com

http://slidepdf.com/reader/full/autenticazione-ssl-su-apache 2/6

 

pubblicato su

WWW.INFOMEDIA.IT

stampa digitale da

Lulu Enterprises Inc.

stores.lulu.com / infomedia

Infomedia

Infomedia e l’impresa editoriale che da quasi venti an-

ni ha raccolto la voce dei programmatori, dei sistemi-

sti, dei professionisti, degli studenti, dei ricercatori e dei

professori d’informatica italiani.

Sono piu di 800 gli autori che hanno realizzato per le te-

state Computer Programming, Dev, Login, Visual Basic

Journal e Java Journal, molte migliaia di articoli tecnici,

presentazioni di prodotti, tecnologie, protocolli, strumen-ti di lavoro, tecniche di sviluppo e semplici trucchi e stra-

tagemmi. Oltre 6 milioni di copie distribuite, trentamila

pagine stampate, fanno di questa impresa la piu grande ed

influente realta dell’editoria specializzata nel campo della

programmazione e della sistemistica.

In tutti questi anni le riviste Infomedia hanno vissuto del-

la passione di quanti vedono nella programmazione non

solo la propria professione ma un’attivita vitale e un vero

divertimento.

Nel 2009, Infomedia e cambiata radicalmente adottando

un nuovo modello aziendale ed editoriale e si e organiz-

zata attorno ad una idea di Impresa Sociale di Comunita,

partecipata da programmatori e sistemisti, separando le

attivita di gestione dell’informazione gestite da un board

comunitario professionale e quelle di produzione gesti-

te da una impresa strumentale. Questo assetto e in linea

con le migliori esperienze internazionali e rende Infome-

dia ancora di piu parte della Comunita nazionale degli

sviluppatori di software.

Infomedia e media-partner di manifestazioni ed eventi in

ambito informatico, collabora con molti dei pi u impor-tanti editori informatici italiani come partner editoriale e

fornitore di servizi di localizzazione in italiano di testi in

lingua inglese.

L’impaginazione automatica di questa rivista e realizzata al

100% con strumenti Open Source usando OpenOffice,

Emacs, BHL, LaTeX, Gimp, Inkscape e i linguaggi Lisp,

Python e BASH

For copyright information about the contents of Compu-

ter Programming, please see the section “Copyright” at 

the end of each article if exists, otherwise ask authors. Infomedia contents is© 2004 Infomedia and released as

Creative Commons 2.5 BY-NC-ND. Turing Club content 

is © 2004 Turing Club released as Creative Commons

2.5 BY-ND.

 Le informazioni di copyright sul contenuto di Computer 

Programming sono riportate nella sezione “Copyright”

alla fine di ciascun articolo o vanno richieste direttamen-

te agli autori. Il contenuto Infomedia e© 2004 Infome-

dia e rilasciato con Licenza Creative Commons 2.5 BY-

 NC-ND. Il contenuto Turing Club e© 2004 Turing Club

e rilasciato con Licenza Creative Commons 2.5 BY-ND.

Siapplicano tuttele normedi tuteladeimarchie deisegni

distintivi.

` E in ogni caso ammessa la riproduzione parziale o tota-

le dei testi e delle immagini per scopo didattico purch´ e

vengano integralmente citati gli autori e la completa

identificazione della testata.

 Manoscritti e foto originali, anche se non pubblicati, non

si restituiscono.

Contenuto pubblicitario inferiore al 45%.

  La biografia dell’autore riportata nell’articolo e sul

sito www.infomedia.it e di norma quella disponibi-

le nella stampa dell’articolo o aggiornata a cu-

ra dell’autore stesso. Per aggiornarla scrivere a

[email protected] o farlo in autonomia all’indirizzo

http: // mags.programmers.net  / moduli / biografia

Page 3: Autenticazione SSL su Apache

5/13/2018 Autenticazione SSL su Apache - slidepdf.com

http://slidepdf.com/reader/full/autenticazione-ssl-su-apache 3/6

 

42 Computer Programming • n. 136 - Giugno 2004

 web

P

artiamo dal presupposto che la necessità di un pro-tocollo sicuro sia ormai fondamentale in un’epocain cui Internet si è talmente sviluppato da permet-tere agli utenti di svolgere innumerevoli operazioni.

Bisogna ricordare che protocolli come HTTP per navigaree mostrarci pagine Web o protocolli come IMAP per leg-gere la nostra posta elettronica, utilizzano di base il proto-collo TCP/IP, che è fondamentalmente vulnerabile nelsenso che i dati che vengono trasmessi sono in chiaro equindi facilmente leggibili e intercettabili in fase di trasfe-rimento.

Introduzione all’SSLSSL (Secure Sockets Layer) permette di gestire l’integri-

tà dei dati e la privacy delle informazioni trasmesse sul webe, come vedremo più in dettaglio, l’autenticazione di noistessi e del server con cui ci colleghiamo. Internet, in fin

dei conti, si basa su di uno scambio di dati tra un client (ilnostro browser), ed un server (ovvero la macchina checontiene i dati di cui abbiamo bisogno). SSL non farànient’altro che crittare le informazioni (ovvero i dati) tra ilserver ed il nostro client. I più importanti metodi di critto-grafia sono notoriamente quelli simmetrici e quelli asim-metrici.

Tra i software più utilizzati, soprattutto con il serverHTTP Apache, ricordiamo OpenSSL ed il modulomod_ssl, con cui possiamo creare le chiavi ed una richiestadi certificazione. Possiamo dire che SSL è un protocollo adue livelli:

• SSL Record Protocol: questo protocollo verrà utilizzato

per l’incapsulamento di tutti i dati, sia in ricezione chein trasmissione, e fornisce i servizi basilari di sicurezza aivari protocolli di livello più alto;

• I tre più alti livelli del protocollo sono definiti comeparte di SSL e riguardano:– SSL Alert Protocol: per comunicare i messaggi di

errore SSL tra client e server;– SSL Change Cipher Spec Protocol: per concordare la

Cipher Suite per la sessione;– SSL Handshake Protocol: per negoziare i vari para-metri di sicurezza per una connessione SSL. Prevedeuna procedura suddivisa in diverse fasi, tra le quali:

– • negoziare la Cipher Suite da utilizzare durante iltrasferimento dati;

– • creare e controllare la chiave di sessione tra cliente server;

– • opzionalmente autenticare il server per il client;– • opzionalmente autenticare il client per il server.

L’architettura del SSL è mostrata in Figura 1. Alcuni tratutti gli algoritmi utilizzati dal protocollo SSL possonoessere: RC4 128 bit e MD5, RC2 128 bit CDC e MD5,

DES 64 bit CBC e MD5, DES 192 bit EDE3 CBC e MD5.Tra le azioni principalmente utilizzate con il protocolloSSL ricordiamo l’autenticazione del SSL server e l’autenti-cazione del SSL client su cui si basa il nostro articolo.

Cos’è un certificato SSLIn sostanza un certificato SSL è un file che consente di

crittografare qualunque informazione scambiata (una pagi-ne web, la vostra posta elettronica, ecc.), nonché di offriregaranzia di identità verso il server web con cui stiamo inte-ragendo. Un certificato digitale, più in dettaglio è unachiave pubblica che è stata “firmata” da una CA. Il brow-ser conosce le chiavi pubbliche di diverse CA, e può quin-di facilmente controllare che la “firma” sia corretta. Il cer-tificato, quindi, ci permetterà di effettuare transazioni sicu-re, indispensabili ad esempio nell’e-commerce, special-mente per l’utilizzo dei dati sensibili delle carte di credito,password e così via.

Il certificato contiene le seguenti informazioni:

In quest’articolo mostreremo come autenticare un utente Web, munito di Certificato SSL,per una determinata risorsa del Server HTTP Apache

di Massimo Nardone

Autenticazione SSL

su Apache

Massimo Nardone

È laureato in Scienze dell’Informazione presso l’Università’ di Salerno.Si è occupato di Sicurezza, Mobile ed implementazioni Web permolti anni come Security Chief Architect, Research and SoftwareEngineer presso un’azienda di Telecomunicazioni Finlandese. Ha col-laborato inoltre come revisionatore tecnico per molti libri sulla sicu-rezza. Attualmente lavora come Technical Account Manager, ProjectManager e Security Specialist per un’azienda di servizi MobileFinlandese. Si occupa inoltre di ricerca ed implementazione per lasicurezza dei protocolli come assistente e supervisore delle esercita-zioni per l’esame di “Security of Communication Protocols” pressol’Helsinki University of Technology (HUT) in Finlandia dove vive elavora da più di 7 anni.

[email protected]

FIGURA 1 L’architettura del SSL▼

Page 4: Autenticazione SSL su Apache

5/13/2018 Autenticazione SSL su Apache - slidepdf.com

http://slidepdf.com/reader/full/autenticazione-ssl-su-apache 4/6

 

Computer Programming • n. 136 - Giugno 2004 43

PROGRAMMING

• Soggetto: Distinguished Name, Public Key• Emittente: Distinguished Name, Signature• Periodo di Validità: Not Before Date, Not After Date• Informazioni Amministrative: Version, Serial Number• Altre informazioni varie

Il campo Distinguished Name è utilizzato per provare l’i-dentità del certificato in qualche specifico contesto, comead esempio per provare l’identità di un certo dipendente diun’azienda o quella di un utente nell’accedere una certarisorsa della rete. Questo campo è definito dallo standardX.509, il quale stabilisce i campi, le descrizioni e le abbre-viazioni che lo compongono. Le informazioni relative alcampo Distinguished Name sono riportate nella Tabella 1.

Creazione di un certificato ClientEsistono molti metodi per creare i certificati SSL. Molto

utilizzato è ad esempio l’interfaccia CA.pl contenuta inOpenSSL. Vogliamo mostrare, adesso, la creazione di un cer-

tificato client utilizzando un semplice script Perl chiamatoda una pagina HTML.Partiamo creando una pagina HTML con i dati di cui il

nostro certificato client ha bisogno. La nostra richiesta ini-zierà creando la FORM di richiesta HTML di cui vi ripor-tiamo alcuni passi principali:

<FORM NAME=”GenerateForm” ACTION=”/cgi-bin/crea_cert.pl”>

<TABLE>

<TR><TD>Nome da Certificare:</TD><TD>

<INPUT TYPE=”TEXT” NAME=”commonName”

VALUE=”Massimo Nardone” SIZE=30>

</TD></TR>

<TR><TD>Organizzazione:</TD><TD>

<INPUT TYPE=”TEXT” NAME=”organizationName”

VALUE=”LaMiaOrganizzazione” size=”20”>

</TD></TR>

La FORM HTML include uno speciale TAG di nome<KEYGEN> , per far si che il browser generi la coppia dichiavi, pubblica e privata, e rimandi in output la chiavepubblica come valore della variabile SPKAC. Ricordiamoche ad ogni modo keygen è un parametro specifico per ilbrowser Netscape e quindi ignorato dal browser InternetExplorer. Definiamo questo TAG nella form HTML inquesto modo:

<KEYGEN NAME=”SPKAC” CHALLENGE=”Mychallenge”>

La Figura2 mostra come il browser Netscape genera lechiavi.

Si genererà poi la richiesta che verrà spedita al file scriptcrea_cert.pl. Vediamone i punti principali.

my $key = $query->param(‘SPKAC’);

Prima di tutto prendiamo il valore KEYGEN contenutonel campo SPKAC.

my $count = “1”.rand 1000;

my $req_file = “cert$count.req”; # certificate request

filename

my $result_file = “cert$count.result”; # certificate

filename

my @req_names = (‘commonName’, ‘emailAddress’,

‘organizationName’, ‘organizationalUnitName’,

‘localityName’, ‘stateOrProvinceName’,’countryName’,

‘SPKAC’);

Prepariamo i file per la richiesta e per il risultato del cer-tificato client da creare, nonché i valori da prendere dalla

nostra FORM HTML:

open(REQ, “>$req_file”) or errore(“Creazione file di

richiesta certificato client fallita. $req_file: $!”);

my $name;

foreach $name (@req_names) {

my $value = $query->param(“$name”);

$value =~ tr/\n//d;

print REQ “$name = $value\n”;

}

close(REQ);

TABELLA 1 Contenuto del campo Distinguished Name

Campo Abbreviazione Descrizione EsempioCommon Name CN Il Nome certificato CN=Massimo NardoneOrganization or Company O Il Nome è associato a questa Organizzazione O=LaMiaOrganizzazioneOrganizational Unit OU Il Nome è associato a questa unità OU=IlMioDipartimento

di Organizzazione o dipartimentoCity/Locality L Località o Città del Nome certificato L=RomaState/Province SP Stato o Provincia del Nome certificato SP=RomaCountry C La Nazione del Nome certificato (codifica ISO) C=ITEmail Address E L’indirizzo Email del Nome certificato [email protected]

FIGURA 2 Creazione della chiave privata▼

Page 5: Autenticazione SSL su Apache

5/13/2018 Autenticazione SSL su Apache - slidepdf.com

http://slidepdf.com/reader/full/autenticazione-ssl-su-apache 5/6

 

44 Computer Programming • n. 136 - Giugno 2004

 web

Apriamo quindi il file di richiesta e scriviamoci i valoridella FORM html, più la chiave pubblica contenute nelcampo SPKAC:

my $cmd = “openssl ca -config $CONFIG -spkac

$req_file -out $result_file -days 360”;

my $rc = system(“$cmd -key $CAPASS 2>errori”);

if($rc != 0) { errore(“$cmd<P>rc = $rc”, “errori”); }

Con la prima riga qui sopra lanciamo quindi il comandoopenssl ca per la creazione del nostro certificato client. Setutto va bene prenderà in input il file di richiesta e creeràil file di risultato, altrimenti ci mostrerà l’errore. Il file dirichiesta generato avrà questo contenuto:

commonName = Massimo Nardone

emailAddress = [email protected]

organizationName = LaMiaOrganizzazione

organizationalUnitName = IlMioDipartimento

localityName = Roma

stateOrProvinceName = Roma

countryName = IT

SPKAC = MIIBRTCBrzCBnzANBgkqhkiG9w0BAQEFAAOB…

Il contenuto del campo SPKAC normalmente è moltopiù lungo e ne abbiamo riportato qui solo una parte perquestioni di spazio. Come si vede utilizziamo il file di con-figurazione openssl.cnf che contiene informazioni sullaposizione dei certificati, le chiavi ed altro utilizzato per lacreazione del nostro certificato client. Vediamone il con-tenuto per l’opzione ca utilizzata nel nostro script:

[ ca ]

default_ca = CA_default

[ CA_default ]

dir = C:/apache/test/demoCA/

certs = $dir/certs

crl_dir = $dir/crl

database = $dir/index.txt

new_certs_dir = $dir/newcerts

certificate = $dir/cacert.pem

serial = $dir/serial

crl = $dir/crl.pem

private_key = $dir/private/cakey.pem

RANDFILE = $dir/private/.rand

A questo punto apriamo il file risultato contenente ilcertificato, ovvero CERT, e lo spediamo direttamente,sotto forma di tipo application/x-x509-user-cert, al browser Netscape che lo inserirà direttamente tra i certificati clientche potremmo utilizzare più tardi, per la nostra demo d’au-

tenticazione. La gestione degli eventuali errori è assegnataad una sub di nome errore. Il certificato client generato èmostrato in Figura 3.

open(CERT, “<$result_file”) or errore(“Apertura file

risultato fallita $result_file<P>$!”);

print “Content-Type: application/x-x509-user-cert\n”;

my $cert_data = join ‘’, <CERT>;

close CERT;

print “Content-Length: “, length($cert_data),

“\n\n$cert_data”;

Installazione dei certificati

Abbiamo visto fin qui come creare certificati SSL.Adesso rapidamente vediamo come installarli nel nostrobrowser. Solitamente per installare i certificati SSL bastasemplicemente aprire il certificato, che ha estensione adesempio .crt, .cer o .der e seguire poi le istruzioni d’instal-lazione. Altre alternative possono essere quelle di richiede-re l’installazione nel nostro browser dei certificati conte-nuti nel server http semplicemente e direttamente utiliz-zando un link in questo modo:

http://MioWebServer:80/certs/ca.crt

Per far questo però, verrà utilizzato il HTTP Content-Type application/x-x509-ca-cert ed avremo quindi bisogno

di inserire la linea AddType application/x-x509-ca-cert.crt nel file di configurazione del web server Apachehttpd.conf. Un altro modo per installare un certificato nelnostro browser è quello di scrivere un semplice script chespedisca il certificato come tipo application/x-x509-ca-certo application/x-x509-user-cert direttamente nel browser. IlListato 1 ci mostra ad esempio come installare nel browseril certificato CA ca.crt precedentemente creato.

Configurazione di Apache e AutenticazioneUna volta creati ed installati nel Browser tutti i certifi-

cati e le rispettive chiavi, finalmente iniziamo a dimostra-re come configurare Apache per realizzare unaAutenticazione di una certa risorsa del server, utilizzando ilnostro certificato client. Per la sua sicurezza, Apache siadatta perfettamente alla realizzazione di un’applicazionedi autenticazione con certificato client su connessioneSSL. Mostreremo come utilizzare, ad esempio, solo i certi-ficati client firmati con il certificato della nostra CA o

FIGURA 3 Certificato Client SSL▼

IIl protocollo SSL permette

di gestire l’integrità dei dati

e la privacy delle informazioni

trasmesse sul web

Page 6: Autenticazione SSL su Apache

5/13/2018 Autenticazione SSL su Apache - slidepdf.com

http://slidepdf.com/reader/full/autenticazione-ssl-su-apache 6/6

 

Computer Programming • n. 136 - Giugno 2004 45

PROGRAMMING

come utilizzare qualsiasi certificato client. Prima di tuttoconfiguriamo una nuova directory nel file httpd.conf diApache in questo modo:

ScriptAlias /cert/ “c:/apache/cert/”

<Directory “c:/apache/cert”>

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>

  Nel file ssl.conf iniziamo configurando il certificatoServer e la sua chiave in questo modo:

SSLCertificateFile conf/ssl.crt/server.crt

SSLCertificateKeyFile conf/ssl.crt/server.key

Ora supponiamo che il nostro sia un esempio mediante ilquale vogliamo accedere alla nostra risorsa con certificaticlient validi emessi, firmati ed accettati dal certificato dellaCA creato da noi poc’anzi. Potremmo ad esempio configu-rare il file ssl.conf in questo modo:

SSLVerifyClient none

<Directory “c:/apache/cert”>

SSLVerifyClient require

SSLVerifyDepth 1

SSLCACertificateFile conf/ssl.crt/ca.crt

SSLCACertificatePath conf/ssl.crt

SSLOptions +FakeBasicAuth

SSLRequireSSL

SSLRequire ( %{SSL_CLIENT_S_DN_O}

eq “LaMiaOrganizzazione” \

and %{SSL_CLIENT_S_DN_OU} in {“Vendite”,

“Sviluppo”, “Marketing”}\

and %{SSL_CLIENT_S_DN_CN} eq “Massimo

Nardone”

and %{SSL_CLIENT_M_SERIAL} eq “1234567890”

)

</Directory>

A questo punto, quando cercheremo di accedere alla risor-sa definita qui sopra, ad esempio scrivendo un link comehttps://localhost:443/cert/ il server http Apache ci richiede-rà obbligatoriamente di identificare l’identità del nostrobrowser aprendo la finestra che coniene i nostri certificaticlient, per selezionare quale vogliamo spedire al server.Ricordiamo che https indica la connessione sicura http conl’utilizzo del protocollo SSL. Dando un’occhiata alla confi-

gurazione qui sopra vediamo che con la riga SSLVerifyClientrequire forzeremo il web server a richiedere un certificatoclient valido per accedere alla risorsa “c:/apache/cert” cheabbiamo precedentemente configurato. Mentre, conSSLVerifyDepth 1, comunichiamo al server con quanta pro-fondità deve ricercare e stabilire se il certificato client rice-vuto può essere accettato come valido per accedere alla

risorsa. Il valore di default “1” indica che il certificato clientpuò essere un certificato self-signed o firmato con il certifi-cato CA che abbiamo appena visto e che è contenuto nelparametro SSLCACertificatePath, ovvero nella directorydove sono contenuti i certificati per la CA. Il parametroSSLCACertificateFile informa Apache dove si trova fisica-mente il certificato CA da utilizzare. Utilizzeremo poi l’op-zione SSLOptions per definire e controllare alcune azioni ditipo run-time, per determinate directory. FakeBasicAuth è,ad esempio, un’opzione mediante la quale il campo SubjectDistinguished Name (DN) del certificato X509 è tradottonel HTTP Basic Authorization username, in modo tale dapoter utilizzare il metodo standard per fare autenticazionenel server http Apache. Il parametro SSLRequireSSL informa

il server che tale risorsa è accedibile solo ed esclusivamentecon una connessione sicura (HTTPS) invece di HTTP.Penso sia il caso di soffermarci particolarmente sull’ultimaopzione, ovvero SSLRequire, che ci permetterà infine dideterminare quali informazioni, sotto forma di variabiliApache standard CGI/1.0, sono strettamente richieste delweb server Apache quando si cercherà di accedere a questarisorsa con il nostro certificato client. Più richieste possonoessere inserite con riferimento Booleano. Nel nostro esem-pio abbiamo richiesto che il Subject Distinguished NameOrganization del nostro certificato X509 contenuto nellavariabile SSL_CLIENT_S_DN_OU abbia un valore ugualea “LaMiaOrganizzazione” e così via con gli altri parametri.

ConclusioniÈ chiaro che Internet ci permetterà di fare sempre più cose

ed è quindi di fondamentale importanza prenderci cura dellivello di sicurezza nel trattare i nostri dati personali. Ciauguriamo di ritrovarvi presto, magari per il prossimo artico-lo quando ad esempio mostreremo come fare autenticazioneutilizzando un LDAP Server. Ci auguriamo vivamente diavervi trasmesso l’interesse per la crittografia ed il mondodell’infrastruttura a chiave pubblica (PKI).

BIBLIOGRAFIA & RIFERIMENTI

[1] Klaus Schmeh, “Cryptography and Public Key Infrastructureon the Internet”, John Wiley & Sons, 2003

[2] Tom Austin, “PKI: A Wiley Tech Brief”, John Wiley &Sons, 2001

[3] Andrew Nash, et al., “PKI: Implementing & Managing E-Security”, Osborne McGrawHill, 2001

[4] John Viega et al., “ Network Security with OpenSSL -Cryptography for Secure Communications”, Oreilly, 2002

[5] Mohammed J. Kabir, “ Apache Server 2 Bible”, John Wiley& Sons, 2002

[6] Marco Ferrante, “OpenSSL per la posta sicura”, ComputerProgramming n. 117

[7] Public Key Cryptography Standards, RSA Lab. Tech. Notes, http://www.rsasecurity.com/rsalabs/pkcs/

[8] Kipp E.B. Hickman, The SSL Protocol, 1995.

http://www.netscape.com/eng/security/SSL_2.html

LISTATO 1 Script per l’inserimento di un certificatoCA nel browser

#!/usr/bin/perl

use strict;

my $cert_dir = “/demoCA/certs”;my $cert_file = “ca.crt”;

my $cert_path = “$cert_dir/$cert_file”;

my $cert_data = “”;open(CERT, “<$cert_path”);while(<CERT>) { $cert_data .= $_; }close(CERT);print “Content-Type: application/x-x509-ca-cert\n”;print “Content-Length: “, length($cert_data), “\n\n$cert_data”;

1;

CODICE ALLEGATO

AuthSSLftp.infomedia.it