Access al portale pst.giustizia.it

di il
4 risposte

Access al portale pst.giustizia.it

Salve,

sto tentando di autenticarmi al portale PST giustizia, ma incontro un problema che credo qualcuno di voi abbia già risolto.

Sono in possesso della chiavetta di un professionista abilitato al portale, me l'ha data appunto per verificare la fattibilità di un programmino che gli dovrebbe scaricare tutti gli allegati ai fascicoli sul suo pc senza doverli scaricare uno alla volta.

Tra la documentazione presa dal sito, e 6/7 mila pezzi di codice presi qua e la su StackOverflow ho buttato giù un po di codice che mi fa arrivare fino alla richiesta del pin ma poi si ferma sulla WebResponse con l'errore seguente:

"Richiesta annullata: Impossibile creare un canale sicuro SSL/TLS.."

Dai log ho tirato fuori la riga seguente, anche questa capitata a molti, ma da tutte le spiegazioni e soluzion trovate e provate in giro, sono orami due giorni che brancolo nel buio...

System.Net Information: 0 : [3892] InitializeSecurityContext(numero In-Buffer=2, lunghezza Out-Buffer=0, codice restituito=IllegalMessage).

Di seguito il codice

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.IO;
using System.Xml;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Cryptography.X509Certificates;
using System.Diagnostics;
using System.Net.Security;

namespace CTU
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Execute();
            //CreateWebRequest("https://ext.processotelematico.giustizia.it/pda/pycons/GLRM/JPW_SICID");
        }

        /// <summary>
        /// Execute a Soap WebService call
        /// </summary>

        public static void Execute()
        {
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.SystemDefault;
            /*
                                                   | SecurityProtocolType.Tls11
                                                   | SecurityProtocolType.Tls12
                                                   | SecurityProtocolType.Ssl3;
            */
            HttpWebRequest request = CreateWebRequest();
            SetCertificatePolicy();
            X509Certificate cert = FindCertByName("CERIFICATO");
            request.ClientCertificates.Add(cert);
            request.ProtocolVersion = HttpVersion.Version10;
            XmlDocument soapEnvelopeXml = new XmlDocument();
            soapEnvelopeXml.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?>
            <soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
                           xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" 
                           xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
	            <soap:Header>
		            <ws:invocationDomain
			            xmlns:ws=""https://ext.processotelematico.giustizia.it/pda/pycons/GLRM/JPW_SICID""
			            soap:MustUnderstand=""true""
            			group=""jpwusers"" role=""JPW"" name=""JPW"">
                    </ws:invocationDomain>
	            </soap:Header>
                <soap:Body>
                    <getServiceNames>
                        xmlns:m=""urn:CONS-SICC-BE""
                    </getServiceNames>
                </soap:Body>
            </soap:Envelope>");

            using (Stream stream = request.GetRequestStream())
            {
                soapEnvelopeXml.Save(stream);
            }

            WebResponse response = request.GetResponse(); <--------------------------------------------------- qui si ferma

            //using (WebResponse response = request.GetResponse())
            //{
                using (StreamReader rd = new StreamReader(response.GetResponseStream()))
                {
                    string soapResult = rd.ReadToEnd();
                    Console.WriteLine(soapResult);
                }
            //}
        }
        /// <summary>
        /// Create a soap webrequest to [Url]
        /// </summary>
        /// <returns></returns>
        public static HttpWebRequest CreateWebRequest()
        {
            //HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(@"https://ext.processotelematico.giustizia.it/pda/pycons/GLRM/JPW_SICID");
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(@"https://ext.processotelematico.giustizia.it");
            webRequest.Headers.Add(@"SOAP:Action");
            webRequest.ContentType = "text/xml;charset=\"utf-8\"";
            webRequest.Accept = "text/xml";
            webRequest.Method = "POST";
            return webRequest;
        }

        private static X509Certificate FindCertByName(string simpleName)
        {
            X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
            store.Open(OpenFlags.ReadOnly);
            foreach (X509Certificate cert in store.Certificates)
            {
                if (cert.Subject.Contains("CN=" + simpleName))
                {
                    return cert;
                }
            }

            string msg = "Il certificato di sicurezza " + simpleName + " non è installato in questo sistema.";
            Debug.WriteLine(msg);
            return null;
        }

        /// <summary>
        /// Sets the cert policy.
        /// </summary>
        private static void SetCertificatePolicy()
        {
            ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate;
        }

        /// <summary>
        /// Certificate validation callback 
        /// </summary>
        private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
        {
            if (error == SslPolicyErrors.None)
            {
                return true;   // already determined to be valid
            }

            switch (cert.GetCertHashString())
            {
                // thumbprints/hashes of allowed certificates (uppercase)
                case "5ACB8B01ED6B099C5B316A1F6E27C7089C70FFAC":

                    Debug.WriteLine("Trusting X509Certificate '" + cert.Subject + "'");
                    return true;

                default:
                    return false;
            }
        }

        public static HttpWebRequest CreateWebRequest(string url)
        {
            Uri uri = new Uri(url);
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);

            webRequest.ProtocolVersion = HttpVersion.Version10;
            webRequest.Proxy = null;
            webRequest.Headers.Add("SOAP:Action");
            webRequest.Headers.Add("X-WASP-User", "codicefiscale");
            webRequest.KeepAlive = true;
            webRequest.ContentType = "text/xml;charset=\"utf-8\"";
            webRequest.Accept = "text/xml";
            webRequest.Method = "POST";
            webRequest.AuthenticationLevel = AuthenticationLevel.MutualAuthRequired;
            
            if (FindCertByName("nomecerificato") != null)
            {
                webRequest.ClientCertificates.Add(FindCertByName("nomecerificato"));
            }

            return webRequest;
        }
    }
}
Grazie a tutti per qualche spunto, dritta, pezzo di codice che funziona...

Stefano

4 Risposte

  • Re: Access al portale pst.giustizia.it

    Esistono millemila programmi già fatti usati da migliaia di avvocati che fanno già questa funzione per un tozzo di pane.
    Non faccio nomi, ma qualsiasi avvocato li conosce.

    Parliamo di poche decine di euro al mese.

    Nello specifico è impossibile approccio proposto perché pst funziona una volta si e 5 no.
    Non ci vuole niente di passare giorni a tentare di scaricare qualche decina di atti.

    Fonte: io. Livello di affidabilità: suprema. Tempo di utilizzo pst: da prima che fosse in uso (area test)
  • Re: Access al portale pst.giustizia.it

    Caro il mio +m2+,
    che se poi ci spieghi il tuo nic te ne sarei/saremmo grati.
    Come sempre vedo che non perdi occasione per dare risposte inutili che se non le davi sarebbe stato lo stesso per tutti...

    A tal proposito aggiungo, un post letto in questi giorni del quale ti riporto il link https://it-it.facebook.com/CaffeSigarettePagina/photos/a.784657604884432/3783562018327294/?type=3&theater

    In tutti i modi se non riesci a leggerlo recita: "abbi il coraggio di dissentire... la dissenteria è un tuo diritto".

    Finito con la prefazione, andimo al testo...

    Dal 1984 scrivo programmi... sotto CMP in Mbasic... con FLOPPY da 8". CPM che poi adottato da Zio Bill è diventato MS-DOS. Poi Tandy Radio Shack processore Z80, in basic senza supporto... scrivevi, provavi e poi spegnevi... se non ti era piaciuto la prossima volta ricominciavi da capo.
    Da da li gwbasic per qualche anno, poi anni di COBOL COmmon Business Oriented Languege sia sotto MS-DOS con RM-COBOL che sotto IBM-S36 con SDA e compagnia cantante... poi altri anni di COBOL su pc OLIVETTI M-24 a due FLOPPY da 5" drive A per i programmi e drive B per i dati, poi sono arrivati gli HD da 5/10 Mb... poi i modem a 300 baud con CarbonCopy per fare la teleassistenza, e le BBS di mclink e pochi altri al mondo, poi CompuServe, poi Internet ItaliaOnLIne, Tiscali, poi VB4, 5 e 6 poi mi sono rotto il ******** e per anni ho fatto solo manunzione al mio installato in vb6...

    Adesso visto che il lavoro migliore che so fare è questo, ho cominciato a studiare C#, e le cose che vado a fare sono più per hobby che per necessità, leggi " per un tozzo di pane.". Non mi appartiene...

    Pertanto se hai indicazioni espressamente richieste nei miei rari post, sono gradite tue risposte, ma se rispondi solo per ********, quando vedi i miei post, NON TI CURAR DI LORO, MA GUARDA E PASSA !!!

    Con affetto
    Stefano
  • Re: Access al portale pst.giustizia.it

    StephenSoftware ha scritto:


    sto tentando di autenticarmi al portale PST giustizia, ma incontro un problema che credo qualcuno di voi abbia già risolto.
    Che versione del .NET Framework stai utilizzando?

    Te lo chiedo perché il problema potrebbe riguardare la versione del protocollo TLS utilizzata per il collegamento.
    In questo articolo c'è spiegata tutta la questione.

    Ovviamente, al momento è solo una ipotesi.

    Ciao!
  • Re: Access al portale pst.giustizia.it

    Il linguaggio utilizzato non è consono a questo forum.
    Dopo aver asteriscato dove necessario passo a chiudere questo thread.
Devi accedere o registrarti per scrivere nel forum
4 risposte