my.ASPItalia.com
ASP.NET
|
HTML5
|
LINQ e Entity Framework
|
Silverlight
|
Windows Phone
|
.NET Framework
|
Libro WP7
|
Libro HTML5
|
Corso on-site HTML5
Iscriviti
Login
Newsletter
Home
Articoli
Script
Notizie
FORUM
Blogs
Lab
Media
Tutorials
Corsi
Libri
Tags
Tutti i forum
Ricerca
FAQ
Fai una domanda
HttpWebRequest e i certificati digitali
in
.NET Framework
>
ASP.NET 3.5
Ultimo messaggio
corradAspItalia
il 22 giugno 2009 alle 22:07
3 messaggi
dal 25 maggio 2009
Ciao a tutti,
sto costruendo un'applicazione web con WinServer2008, quindi IIS 7, e asp.net 3.5.
Questa pagina deve girare solo su SSL.
Motivo percui su IIS configuro per il sito il relativo certificato.
Fin qui tutto bene.
Questa pagina deve far fare un download di un file che per sicurezza deve prima essere firmato digitalmente e poi criptato con chiave simmetrica (anche qui tutto bene) e poi postato con messaggio SOAP che contiene il file criptato e la chiave simmetrica criptata a sua volta con una chiave asimmetrica: chiave pubblica di un certificato digitale inviatomi dal client.
E' in ques'ultima parte che ho dei problemi, o meglio ho dei comportamenti che non mi aspetto dalla pagina Asp.net e/o IIS
Cercando un pò in giro son riuscito a trovare un esempio di client per fare una richiesta Http con allegato un certificato digitale (http://www.codeproject.com/KB/security/attachCertWithHttpsReques.aspx)
Controllando il codice client sembra che il certificato sia inserito nell'oggetto HttpWebRequest, ma sul lato della pagina asp.net, tramite il codice pubblicato direttamente da microsoft :
Page_Load()
{
.........
HttpClientCertificate cert = Request.ClientCertificate;
if (cert.IsPresent)
certDataLabel.Text = cert.Get("SUBJECT O");
else
certDataLabel.Text="No certificate was found.";
.........
}
Ho provato innanzitutto a mettere l'opzione su IIS su impostazioni SSL di Richiedi SSL e Richiedi certificato, col risultato che tramite iexplore non riesco più ad accedere alla pagina (ne deduco che non ho installato correttamente il certificato client su ie).
Ho provato ha fare il mapping dei certificati con gli utenti (cosa peraltro non semplice) e non cambia nulla.
Ho pensato di aver sbagliato qualcosa nelle opzioni di IIS 7 e allora mi sono spostato su un IIS 6 che permette la mappatura via interfaccia grafica e quindi più facile, ma il risultato non cambia.
Ho tolto l'opzione Richiedi certificato in Accetta in modo da poter comunque verificare che almeno in IE posso visualizzare la pagina.
Il risultato quando comunque riesco ad avere un response dal server e lo visualizzo è che per lui non c'è allegato il certificato.
Qualcuno sa dirmi in cosa sbaglio?
Il codice é :
//
private void postFile()
{
HttpWebRequest req = null;
HttpWebResponse rsp = null;
X509Certificate cert = X509Certificate.CreateFromCertFile("d:\\cert\\abc.crt");
// Create a X509Certificat object from yor certificate.
// other way is to go through all the cerificates which are installed
// in your Pc and get the right one from the store list
string uri = "https://abc.com:2111/test.aspx";
// A url which is looking for the right public key with
// the incomming https request
String myfile = File.ReadAllText("C:\\somfile.xml");
req = (HttpWebRequest)System.Net.WebRequest.Create(uri);
String DataToPost = this.GetTextFromXMLFile(myfile);
String strSenderID = "123";
req.Method = "POST"; // Post method
req.ContentType = "application/octet-stream"; // content type
//You can also use ContentType = "text/xml";
req.Headers.Add("sender-id", strSenderID);
// Some Header information which you would like to send
// with the request
req.ContentLength = 1000;
req.KeepAlive = false;
req.UserAgent = null;
req.Timeout = 99999;
req.ReadWriteTimeout = 99999;
req.ServicePoint.MaxIdleTime = 99999;
req.ClientCertificates.Add(cert);
// Attaching the Certificate To the request
System.Net.ServicePointManager.CertificatePolicy =
new TrustAllCertificatePolicy();
// when you browse manually you get a dialogue box asking
// that whether you want to browse over a secure connection.
// this line will suppress that message
//(pragramatically saying ok to that message).
StreamWriter writer = new StreamWriter(req.GetRequestStream());
writer.WriteLine(this.GetTextFromXMLFile(myfile));
writer.Close();
rsp = (HttpWebResponse)req.GetResponse();
System.IO.StreamReader reader =
new System.IO.StreamReader(rsp.GetResponseStream());
String retData = reader.ReadToEnd();
if (req != null) req.GetRequestStream().Close();
if (rsp != null) rsp.GetResponseStream().Close();
}
Rispondi
Quoting
Cradle
il 23 giugno 2009 alle 06:56
1.856 messaggi
dal 01 luglio 2004
Contributi
www.aspitalia.com
|
Blog
Domanda banale, ma neanche tanto: perchè non usi WCF con wsHttpBinding?
Rispondi
Quoting
corradAspItalia
il 23 giugno 2009 alle 09:43
3 messaggi
dal 25 maggio 2009
Cradle ha scritto:
Domanda banale, ma neanche tanto: perchè non usi WCF con wsHttpBinding?
A dir la verità non conosco i WCF
ma dovrei usarli al posto della pagina asp, giusto?
Rispondi
Quoting
Cradle
il 23 giugno 2009 alle 11:12
1.856 messaggi
dal 01 luglio 2004
Contributi
www.aspitalia.com
|
Blog
Sì, e ti assicuro che è MOLTO meno faticoso, veloce e soprattuto con meno rischi di errori, rispetto a fare a mano tutto; ah.. il mio consiglio non cambia anche se dovessi mettere in conto qualche giorno di self training su questa tecnologia.
m.
Rispondi
Quoting
corradAspItalia
il 28 giugno 2009 alle 18:11
3 messaggi
dal 25 maggio 2009
nessun altro consiglio?
Rispondi
Quoting
Salto rapido
Ultimi messaggi
Tutti i forum
Ricerca
Utenti online
ASP.NET
ASP.NET 2.0
ASP.NET 3.5
ASP.NET 4.0
.NET Framework
Silverlight
Windows Phone
Windows Presentation Foundation e WinForms
Windows Communication e Workflow
ASP - avanzato
ASP - base
SQL Server e MySQL
Libri
Hosting
Altri linguaggi e tecnologie
Windows Server, IIS & Security
E-commerce
OT
Commenti: blogs e notizie
Eventi
Torna al forum
| Feed
RSS
ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Speciale Silverlight 5: tutte le novità
Rilasciato il bollettino MS11-100 per risolvere i problemi di attacchi DoS di ASP.NET
I più letti di oggi
Le funzionalità di drag and drop di Silverlight 4.0
Zip e ASP.NET
C# 4
Disponibile il codice sorgente di ASP.NET MVC
Windows Server AppFabric in versione 1.0 RTM
jQuery UI in hosting su Microsoft CDN
Windows 8 su ARM: avrà il desktop, Office e il connected standby
Media
Windows Phone 7.5 Developer Day: marketplace e strumenti per monetizzare le app
Windows Phone 7.5 Developer Day: costruire app con Visual Studio 2010 e Windows Phone Runtime
Tutti i media
In evidenza
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Speciale Silverlight 5: tutte le novità
Sviluppare applicazioni per Windows Phone: scopri come fare con il nostro nuovissimo libro!
Sviluppa le applicazioni del futuro oggi: impara con il nostro libro HTML5 Espresso!
Community Days 2012 - Milano
Windows 8 su ARM: avrà il desktop, Office e il connected standby
Rilasciato Entity Framework 4.3
Sovrascrivere il tipo di esecuzione di una query PLINQ
MISC
I nostri autori
Collabora con noi!
Media Kit - Pubblicità sul nostro network