Τερματισμός SSL και του ASP.NET

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 910444 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Υποστήριξη ASP.NET ομιλία στήλη

Τερματισμός SSL και του ASP.NET

Για να προσαρμόσετε αυτήν τη στήλη για τις ανάγκες σας, θέλετε να προσκαλέσετε να υποβάλλετε τις ιδέες σας σχετικά με θέματα που σας ενδιαφέρουν, μπορείτε και θέματα για τα οποία θέλετε να δείτε απευθύνεται σε μελλοντικές άρθρα της Γνωσιακής βάσης και οι στήλες υποστήριξης της φωνής. Μπορείτε να υποβάλετε σας ιδέες και τα σχόλιά σας χρησιμοποιώντας τοΕρώτηση για τηνMAPI. Υπάρχει επίσης μια σύνδεση για τη φόρμα στο κάτω μέρος αυτής της στήλης.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Καλώς ορίσατε στη στήλη ASP.NET υποστήριξης της φωνής. Το όνομά μου είναι Jerry Orman. Έκανα έχουν με τη Microsoft για περισσότερο από πέντε χρόνια και αναλώσατε μεγαλύτερο μέρος του χρόνου εστιάζεται στις τεχνολογίες που σχετίζονται με το Web, όπως το Microsoft FrontPage και Microsoft προϊόντων και τεχνολογιών SharePoint. Έχετε αφιέρωσα το τελευταίο έτος που λειτουργεί με Microsoft ASP.NET ως ένας μηχανικός υποστήριξης. Αυτό το μήνα, μου πρόκειται να συνομιλήσετε σχετικά με SSL τερματισμού και του ASP.NET. Ειδικότερα, εάν θέλετε να εστιάσετε σε ζητήματα που προκύπτουν από μια ρύθμιση παραμέτρων του διακομιστή. Εμείς πρόκειται να ρίξετε μια ματιά τερματισμός SSL και κάποια ανεπιθύμητα αποτελέσματα αυτής της ρύθμισης παραμέτρων στην εφαρμογή σας.

Τερματισμός SSL είναι ένα σύνολο παραμέτρων που το διακομιστή Web που εκτελεί τον κώδικά σας στέλνει και λαμβάνει κυκλοφορία μέσω HTTP και δεν υπάρχει συσκευή που κρυπτογραφεί και αποκρυπτογραφεί τα δεδομένα μεταξύ του διακομιστή Web και οι υπολογιστές-πελάτες. Σε αυτήν τη ρύθμιση, οι υπολογιστές-πελάτες είναι στέλνει και λαμβάνει κυκλοφορία HTTPS. Η ρύθμιση παραμέτρων SSL τερματισμού είναι παρόμοιο με το ακόλουθο:
Πρόγραμμα-πελάτης <— https="" —="">SSL συσκευή <— http="" —="">διακομιστή Web</—></—>
Ας μεταβείτε τώρα περισσότερα από δύο ζητήματα που διατίθενται προς τα επάνω στο Microsoft ASP.NET 2.0 με αυτήν τη ρύθμιση και ορισμένοι τρόποι για να επιλύσετε το ζήτημα.

Ζήτημα 1

Όταν καταδείξετε ένα στοιχείο μενού με το ASP.NET 2.0Μενού (Menu)στοιχείο ελέγχου, λαμβάνετε το ακόλουθο μήνυμα λάθους:
Η σελίδα αυτή περιλαμβάνει τόσο ασφαλή όσο και μη ασφαλή στοιχεία. Θέλετε να εμφανιστούν τα μη ασφαλή στοιχεία; (This page contains both secure and nonsecure items. Do you want to display the nonsecure items?)?
Υποτίθεται ότι η εφαρμογή να είναι ασφαλής, χρησιμοποιείτε το πρωτόκολλο SSL, και δεν έχετε προσθέσει στοιχεία ελέγχου που στόχο απόδοσης μια απόλυτη διαδρομή στο HTTP διεύθυνση. Τι είναι ενεργή με αυτό το μήνυμα;

Επίσης, το πρόβλημα είναι ότι τοΜενού (Menu)στοιχείο ελέγχου εκπέμπει κάποιες JavaScript που χρησιμοποιεί έναiFrameτο αντικείμενο για να δημιουργήσετε το μενού διάρκεια της λειτουργίας διαγραφής. Θα πρέπει να σας δώσει μια αρχική διεύθυνση URL στο πλαίσιο. Για να αποφύγετε να κάνετε ένα ταξίδι περιττές γύρο στο διακομιστή για σενάρια μη SSL, η δέσμη ενεργειών χρησιμοποιείπληροφορίες σχετικά με: κενόγια τη διεύθυνση URL. Ωστόσο, το πρόγραμμα περιήγησης θεωρεί αυτό διεύθυνσης μη ασφαλές, ώστε να μπορείτε να λάβετε το παραπάνω σφάλμα.Για περισσότερες πληροφορίες σχετικά με αυτό το ζήτημα, από την άποψη των υπηρεσιών Microsoft Windows SharePoint Services, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
837850Εμφανίζεται το μήνυμα "Η σελίδα αυτή περιλαμβάνει τόσο ασφαλή όσο και μη ασφαλή στοιχεία" όταν κάνετε κλικ στην επιλογή προβολή Εξερεύνησης μιας βιβλιοθήκης εγγράφων στο Windows SharePoint Services ή το SharePoint Team Services της Microsoft
Μου ρητά αναφέρετε σενάρια μη SSL επειδή, αν ο διακομιστής Web έχει λαμβάνει την κυκλοφορία HTTPS, αντί για τη συσκευή SSL, η JavaScript που τοΜενού (Menu)εκπέμπει το στοιχείο ελέγχου πρέπει να προσθέσετε μια γραμμή κώδικα για τον ορισμό της προέλευσης τουiFrameτο αντικείμενο σε μια διεύθυνση HTTPS μιας σελίδας στο διακομιστή. Αυτό ξεκινά μια άλλη αίτηση, αλλά δεν επιτρέπει το μήνυμα λάθους. Εάν ανάπτυξη σε αυτόν τον τύπο του περιβάλλοντος, μπορείτε να επιβάλετε την προσθήκη της JavaScript για να αποφύγετε το μήνυμα λάθους προσθέτοντας αυτόν τον κωδικό για τη σελίδα που περιέχει τοΜενού (Menu)Control.
 <script runat="server">
   protected override void Render(HtmlTextWriter writer) 
   {
        Page.ClientScript.RegisterStartupScript(typeof(Page), "MenuHttpsWorkaround", 
        Menu1.ClientID + "_Data.iframeUrl='https://myserver/someblankpage.htm';", true);
        base.Render(writer);
   }
</script>
 
Ιδανικά, θα πρέπει το μενού μιαMasterPageη κλάση ή έναUserControlκλάσης και να προσθέσετε αυτόν τον κωδικό μόνο μία φορά.

Θέμα 2

You may find that, when you have therequireSSLχαρακτηριστικό με το<forms></forms>element set toTrue, the server responds with repeated redirects to theFormsAuthenticationlogin page. This is caused by a change in the way theFormsAuthenticationModulemethod handles therequireSSLΧαρακτηριστικό. If you set therequireSSLτο χαρακτηριστικό για ναTrueΓια ναFormsAuthenticationModulemethod creates a cookie that has thesecureattribute set. (This behavior is the same as in the .NET Framework 1.1.) Όταν χρησιμοποιείτε τοsecureattribute, the client will only pass the cookie to the server if the client is using SSL. This part is great, because the client is indeed using SSL. Let's assume you have a SecurePage.aspx page that anonymous users can't access. With the SSL protocol and therequireSSLattribute, you end up with the following traffic on an initial request to SecurePage.aspx:
—>Client makes a GET request for SecurePage.aspx .

<—server responds="" with="" an="" http="" 302="" (redirect)="" to="" the="" login="" page.=""></—server>

—>Client makes a GET request for Login.aspx.

<—server responds="" with="" a="" 200="" ok.="" the="" login="" page="" is="" rendered="" to=""></—server>

—>Client makes a POST request to Login.aspx.

<—server responds="" with="" a="" 302="" (redirect)="" to="" securepage.aspx.="" set="" cookie="" header="" is="" sent="" with="" the=""></—server>secureattribute to the client.

—>Client makes a GET request to SecurePage.aspx. Cookie is passed because the client is using SSL.

<—server responds="" with="" a="" 302="" (redirect)="" back="" to="" the="" login=""></—server>

You get the redirect in the last request because of a change in theFormsAuthenticationModuleCLASS. An additional check was added in ASP.NET 2.0 to determine whether the user is passing a secure cookie over a non-SSL request. ASP.NET 2.0 returns theFormsAuthenticationTicketclass if theFormsAuthentication.RequireSSLη ιδιότητα έχει οριστεί σεFALSEor if theRequest.IsSecureτο χαρακτηριστικό έχει οριστεί σεTrue.
  • Για ναFormsAuthentication.RequireSSLη ιδιότητα έχει οριστεί σεFALSEif therequireSSLτο χαρακτηριστικό έχει οριστεί σεFALSEin the configuration file.
  • Για ναRequest.IsSecureτο χαρακτηριστικό έχει οριστεί σεTrueif the Web server receives SSL traffic.
Since, in this scenario, the Web server is not receiving SSL traffic and therequireSSLτο χαρακτηριστικό έχει οριστεί σεTrue, both checks returnFALSE. As a result, theFormsAuthenticationTicketclass is not returned and the cookie is removed from theRequest.Cookiesη συλλογή.

The request that the user is making is anonymous at this point because the server has not yet validated the user's credentials. As the request passes through the ASP.NET pipeline, theUrlAuthorizationModuleclass checks whether the user has access to the page. Since an anonymous user does not have access to a SecurePage.aspx page, theUrlAuthorizationModuleclass returns a 401 error message ("Access Denied"), which results in a redirect to the login page.

In order to avoid this behavior, you first have to remove therequireSSLattribute from the<forms></forms>tag in the configuration file. Then you have to programmatically set thesecureχαρακτηριστικό από τοFormsAuthenticationcookie. The following code does this for you, for both theFormsAuthenticationcookie and theΠερίοδος λειτουργίαςcookie.
void Application_EndRequest(object sender, EventArgs e)
{
     if (Response.Cookies.Count > 0)
     {
          foreach (string s in Response.Cookies.AllKeys)
          {
               if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")
               {
                    Response.Cookies[s].Secure = true;
               }
          }
     }
}

Αναφορές

Για περισσότερες πληροφορίες σχετικά με τοΜενού (Menu)control, visit the following Microsoft Developer Network (MSDN) Web site:
http://msdn2.microsoft.com/en-us/library/2xt3t8a7(vs.80).aspx
Για περισσότερες πληροφορίες σχετικά με τοrequireSSLχαρακτηριστικό με τοFormsAuthentication.RequireSSLη ιδιότητα, επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.requiressl.aspx
Για περισσότερες πληροφορίες σχετικά με τοIsSecureχαρακτηριστικό με τοHttpRequest.IsSecureConnectionproperty, visit the following MSDN Web site:
http://msdn2.microsoft.com/en-us/library/system.web.httprequest.issecureconnection(vs.71).aspx
Για περισσότερες πληροφορίες σχετικά με τοFormsAuthenticationModuleκλάση, επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:
http://msdn2.Microsoft.com/en-us/library/System.Web.Security.formsauthenticationmodule.aspx
Για περισσότερες πληροφορίες σχετικά με τοUrlAuthorizationModuleκλάση, επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:
http://msdn2.Microsoft.com/en-us/library/System.Web.Security.urlauthorizationmodule.aspx


Ελπίζω να βρείτε αυτές τις πληροφορίες χρήσιμες όταν χρησιμοποιείτε SSL τερματισμού και Microsoft ASP.NET. Να θυμάστε ότι οι στήλες φωνητική υποστήριξη είναι για εσάς! Πάντα, αίσθηση ελεύθερο να υποβάλλουν ιδέες σχετικά με θέματα που θέλετε στο μέλλον απευθύνεται στήλες ή με τη χρήση της Γνωσιακής Βάσης τηςΕρώτηση για τηνMAPI.

Ιδιότητες

Αναγν. άρθρου: 910444 - Τελευταία αναθεώρηση: Παρασκευή, 24 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft ASP.NET 2.0
Λέξεις-κλειδιά: 
kbhowto kbasp kbmt KB910444 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:910444
Αποποίηση ευθυνών για περιεχόμενο της Γνωσιακής Βάσης (KB) που έχει αποσυρθεί
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com