Hejsan!
Jag gör en webapp som hanterar känslig information och behöver således skicka och hämta denna info mellan server och klient med ssl, men jag vet inte hur jag implementerar detta. Är det någon som vet nån bra tutorial för att använda SSL i asp.net? jag har googlat men inte hittat nåt bra.. :l
ASP.NET och SSL?
15 svar · 889 visningar · startad av Arizon
Kanske kan få ut något från detta: http://www.leastprivilege.com/PartiallySSLSecuredWebAppsWithASPNET.aspx
Liten How-to/Guide/tutorial för att fixa så din IIS använder SSL
så. nu har jag styrt upp så att SSL används i IIS:en.. man kunde sätta det i properties i IIS:en. Först är det bra om man gör en virtuell katalog också, annars är det svårt att komma åt sidan.
det gör du såhär:
*Installera IIS genom att gå in på control panel/add- or remove programs/add-/remove windows components. klicka i Internet Information Service (IIS).
sedan:
*navigera hit: control panel/administrative tools/Computer management/services and applications
*expandera internet information services
*expandera web sites
*Högerklicka på Default Web Site och välj New.. -> Virtual Directory
*döp din virtuella katalog till något passande namn och fortsätt i wizarden. välj den katalog på din hdd där du har dina web site/web application filer.
*done.
För att köra din app med SSL (Secure Socket Layer) så behöver du ett certifikat.
Högerklicka på din virtuella katalog i IIS:en och välj properties.
klicka på fliken "Directory Security" och sedan på server certificate. följ wizarden.
vidare info om SSL och hur du gör ett certifikat hittar du här:
http://www.leastprivilege.com/PartiallySSLSecuredWebAppsWithASPNET.aspx
http://www.somacon.com/p41.php
För att din applikation ska kräva SSL så behöver du styra detta också, vilket du även finner info om via länken ovan.
för att navigera till din sida med krypterad överföring:
Normalt så körs webservers på port 80, i detta fall behöver man inte ange portnumret, men ibland kan IIS:en klaga på att port 80 är upptagen, då kan man förslagsvis köra det via 8080 istället, och i det fallet måste portnumret anges i adressfältet för att sidan ska hittas.
för att få reda på ditt externa ip: https://mittip.se
jag kan inte garantera att det funkar med detta och mottager gärna kompletteringar från mer erfarna utvecklare/nördar :bire :birp
Härlig lösning och stort tack för att du delar med dig av vad du kommit fram till! :e
CatZ skrev:
Härlig lösning och stort tack för att du delar med dig av vad du kommit fram till! :e
Självklart! man måste ju dela med sig av kunskapen!
Toppen Arizon!
Nu saknar vi bara att du sätter tråden som löst.. om det är det förstås :)
njaa. jag tänkte återkomma med hur man fixar så att SSL krävs.. redirect och lite sånna prylar.. kod för web.xml osv. sen ska jag sätta den som löst. Tänkte fixa det idag så den blir nog färdig under dagen hoppas jag på.
Arizon - jättebra med en steg-för-steg-guide! Tack! (y)
Här finns info om hur man tvingar sin webapp/website att använda SSL och även hur man gör för att skapa ett custom error i sin IIS.
http://weblogs.asp.net/pwilson/archive/2004/12/23/331455.aspx
Force SSL
*Öppna properties för din virtuella katalog i IIS:en.
*välj fliken Directory security
*välj Edit under Secure communications
*klicka i "require secure channel(SSL)"
Här får gärna någon fylla i huruvida man ska välja 128k kryptering och vad man ska välja när det gäller client certificates, för jag vet inte riktigt.
prova nu med att ange din adress utan https såhär:
http://dittIpNummer:port/VirtuellKatalog/sida.aspx
om du gjort rätt i inställningarna så ska du få error 403.4 eller nåt sånt. visas din sida när du pekar mot den utan https så har du inte fått din force ssl att fungera.
Testa även att ange med https:
https://dittIpNummer:port/VirtuellKatalog/sida.aspx
Du ska nu få godkänna certifikatet och du kommer tillfrågas om du litar på den certificate authority som utgivit certifikatet, eftersom du gjort det själv så hoppas jag att du litar på det, clicka i att du godkänner. Du ska nu få upp din sida med kryptering. i firefox blir adressen grön i adressfältet, och man får upp en grön liten nyckel där.
För att skapa ett custom Error:
*Börja med att skapa en ny sida i din app, som du döper till något i stil med "noSSL" eller så.
*markera din virtuella katalog i tree-viewen till vänster i fönstret så du får upp alla filer till höger.
*högerklicka på din "noSSL"-fil och välj properties->File Security -> Secure communications -> edit -> AVmarkera "require secure channel(SSL)". om du inte gör detta så kommer man inte åt denna med http, moment 22 mao. Lämplig kod för denna sida återkommer jag med.
*Gå till properties för din virtuella katalog i IIS:en.
*Välj fliken "custom errors"
*Välj fel 403;4 och klicka på edit properties
*Peka till din custom errorsida som du ska sätta upp/har satt upp.
Jag pekar custom error till min aspx-sida, även fast IIS:en egentligen vill ha en HTML-sida, och när felet uppstår så får jag fel eftersom det inte är en HTML-sida.
Detta sker när jag anger sidan som file, när jag anger det som URL så klagar IIS:en på att det inte är en korrekt lokal url :q
nån som vet hur jag kan lösa det?
Det är fredag! :bire :birp
Right. Jag har löst nu iaf så att den godtar min aspx-sida som URL, jag angav den som /projektnamn/sida.aspx
Nu är frågan om det är någon som har ett C#/asp.net-script för redirect från http till https att bistå med? jag har googlat men ej hittat något.. känner inte att mina kunskaper räcker till att skriva ett eget..
well, I'll see what I can do.. :stud
Det fick helt enkelt bli en simpel Response.Redirect:
protected void Page_Load(object sender, EventArgs e)
{
Response.Redirect("https://ipnummer/virtuell mapp/Intro.aspx");
}
om man avsiktligt tar bort s:et när man surfar längre in på sidan så får man leva med att börja om på introsidan.
man måste ange en exakt url vad jag vet, för att få https att fungera. man kan t.ex. inte skriva ~/virtuell mapp/Intro.aspx vad jag vet.
Jag började med denna kod i Page_Load:
StringBuilder url = new StringBuilder(Request.Url.AbsolutePath);
//String data = Request.ServerVariables["QUERY_STRING"];
Session["url"] = url;
//url = url.Replace("403", "");
url.Replace("http://", "https://");
Response.Status = "200 OK";
Response.Redirect(url.ToString());
men jag fick detta från firefox:
FireFox skrev:
The page isn't redirecting properly
Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
\* This problem can sometimes be caused by disabling or refusing to accept cookies.
Om nån känner för att busa med denna kod och få det att funka så står jag gladeligen med hatten av och mottager en fungerande kodsnutt! (y)
CatZ skrev:
Jag ser inget problem med att folk som tar bort s:et får börja om från början. Jag gjorde en enkel webshop där jag helt raderade sessionen, korgen och lät användaren starta om helt om de försökte med något fuffens.
Du kan även ställa in IIS till att köra i SSL på http://.
HAHA! det är så det ska vara, man ska få känna på sina misstag så man lär sig. det är som polarens blender/bakmaskin från 60-/70-talet, där man kan köra den, med knivbladen fullt åtkomliga, om man tar bort skålen/kannan!
"if you hurt yourself, you deserved it for playing with dangerous stuff" typ. :h