2010-08-31 3 views
1

Я использую IIS 6. Мне нужно определить, работает ли определенный сайт под http или https.Определение протокола для веб-сайта

Я пытался извлекать все свойства, используя «DirectoryEntry» от: IIS: // локальный/W3SVC/1 (1 это идентификатор сайта в этом примере)

Ниже приведены результаты. Если кто-нибудь знает какой-либо другой способ определения IIS6 типа протокола программно, используя «» DirectoryEntry - пожалуйста, дайте мне знать

 
AccessFlags = 513 
AppIsolated = 2 
KeyType = IIsWebVirtualDir 
Path = c:\inetpub\wwwroot 
AppRoot = /LM/W3SVC/1/ROOT 
AppFriendlyName = Default Application 
DefaultDoc = Default.htm,Default.asp,index.htm,iisstart.asp 
AnonymousPasswordSync = True 
DirBrowseFlags = 1073741886 
CacheISAPI = True 
CGITimeout = 300 
AuthFlags = 1 
ContentIndexed = True 
AspLogErrorRequests = True 
AspScriptFileCacheSize = 250 
AspScriptEngineCacheMax = 125 
AspExceptionCatchEnable = True 
AspTrackThreadingModel = False 
AspAllowOutOfProcComponents = True 
AspEnableAspHtmlFallback = False 
AspEnableChunkedEncoding = True 
AspEnableTypelibCache = True 
AspErrorsToNTLog = False 
AspProcessorThreadMax = 25 
AspRequestQueueMax = 3000 
AspMaxDiskTemplateCacheFiles = 1000 
AspAllowSessionState = True 
AspBufferingOn = True 
AspEnableParentPaths = True 
AspSessionTimeout = 20 
AspQueueTimeout = -1 
AspCodepage = 0 
AspScriptTimeout = 90 
AspScriptErrorSentToBrowser = True 
AppAllowDebugging = False 
AppAllowClientDebug = False 
AspKeepSessionIDSecure = False 
AspEnableApplicationRestart = True 
AspQueueConnectionTestTime = 3 
AspSessionMax = -1 AspLCID = 2048 
AnonymousUserName = IUSR_MASTER 
AspScriptLanguage = VBScript 
AspScriptErrorMessage = An error occurred on the server when processing the URL. Please contact the system administrator. 
AnonymousUserPass = wl60A8PT[[email protected] 
AspDiskTemplateCacheDirectory = %windir%\system32\inetsrv\ASP Compiled Templates 
HttpCustomHeaders = X-Powered-By: ASP.NET 
KeyType = IIsCertMapper 

Может ли из них сказать мне, если протокол Http или Https? Если нет ... кто-нибудь знает, как проверить его с помощью C# на IIS 6?

+1

Что вы подразумеваете под «бегом»? У меня на сайте могут быть как привязки http, так и https. – ScottE

ответ

2

Уверен: IIS AccessSSLFlags Недвижимость содержит эти сведения.

Если установлен флажок AccessSSL (hex 0x00000008), это означает, что требуется SSL-https-, если не доступен http.

Как обычно, вы должны проверить это свойство в корневом каталоге IIS WebServer, поскольку логика IIS основана на виртуальных каталогах.

Path -> IIS: // локальный/W3SVC/1/Root

+0

Мне кажется, что AccessSSLFlags определяет только, требуется ли SSL-соединение _required_ для доступа к объекту, а не для привязки SSL для сайта. –

+0

Yup, из вопроса: «Мне нужно определить, работает ли определенный сайт под http или https». Если установлен флажок AccessSSL (hex 0x00000008), это означает, что требуется SSL -ie https-, если недоступен http (отредактировано, чтобы добавить это). Если возникает вопрос: «Как я могу определить, могу ли я подключиться к определенному сайту с использованием https», вопрос должен быть более конкретным: https с сертификатом сервера или сертификатом клиента: конфигурация IIS может отличаться. – JoeBilly

-1

Если вы можете подождать, пока не получите запрос, вы можете использовать Request.IsSecureConnection.

+0

Это довольно уродливое решение ... Я ищу что-то более плавное – Nissim

-1

не тот, кто разбирается в C#, но я считаю, что вы можете загрузить информацию web.config в своем приложении. Там вам следует подумать, есть ли специальный ключ безопасности, указывающий, что SSL настроен на сервере.

Configuration.AppSettings(<key>) 
0

Вы можете использовать метабазу, чтобы рассказать. Я не знаю, почему это не в вас, но должно быть свойство lik IsSecure = true, чтобы указать, что ssl требуется. Я не думаю, что это свойство установлено, если ssl не является обязательным.

1

Похоже, что вам нужно смотреть использовать SecureBindings свойство объекта IIsWebServer.

Я проверил следующий фрагмент кода на моем собственном Windows Server 2003 с использованием сайтов SSL и не SSL.

DirectoryEntry di = new DirectoryEntry("IIS://prodweb1/W3SVC/1"); 
PropertyValueCollection sslCertHashProperty = di.Properties["SSLCertHash"]; 
if (sslCertHashProperty.Count > 0) 
{ 
    Console.WriteLine("Site has associated SSL Certificate."); 
} 
PropertyValueCollection secureBindingsProperty = di.Properties["SecureBindings"]; 
if (secureBindingsProperty.Count > 0) 
{ 
    Console.WriteLine("Site has at least one SSL (https) binding."); 
} 
PropertyValueCollection serverBindingsProperty = di.Properties["ServerBindings"]; 
if (serverBindingsProperty.Count > 0) 
{ 
    Console.WriteLine("Site has at least one non-SSL (http) binding."); 
} 
+0

Привязки только говорят, на каком хосте: Порт сайта будет принимать SSL-соединения, он не гарантирует, что SSL-связь доступна/требуется для этого веб-сайта. – JoeBilly

-1

Вы можете проверить объект запроса. Если используется SSL:

HttpContext.Current.Request.ServerVariables["HTTPS"].ToLower() == "on" 

 Смежные вопросы

  • Нет связанных вопросов^_^