IIS выполняет проверку SSL-сертификата или мне нужно это проверять? - PullRequest
13 голосов
/ 29 ноября 2011

У меня есть IIS, настроенный на прием только клиентских подключений с сертификатом SSL.У меня есть служба WCF, работающая на IIS.У меня есть центр сертификации в доверенных центрах серверов.Теперь, когда клиент подключается к службе, проверяет ли IIS, что сертификат клиента был выдан одним из моих доверенных центров сертификации?Или мне нужно выполнить проверку в моей службе WCF?

Также, если я хочу, чтобы служба только принимала соединения от одного конкретного ЦС (не всех моих доверенных ЦС, только один)Должен ли я сделать проверку в сервисном коде?

Ответы [ 2 ]

15 голосов
/ 29 ноября 2011

Если вы настроили IIS для запроса взаимного HTTPS (SSL с клиентскими сертификатами), IIS / http.sys отвечает за проверку сертификата, а клиентский сертификат должен находиться либо в хранилище доверенных лиц, либо он должен быть выдан доверенным центром сертификации. Сертификат проверяется во время подтверждения безопасности для установления соединения SSL. Когда IIS используется для размещения службы WCF, эта проверка выполняется за пределами WCF (в случае самостоятельного размещения вы можете использовать пользовательскую проверку сертификата ).

Если вы хотите ограничить доступ к сервису только для ограниченного подмножества клиентов (с сертификатами, выданными только одним ЦС), вам следует переместить это требование с аутентификации (проверки сертификата) на авторизацию = custom AuthorizationPolicy ваша служба WCF, где вы будете проверять, что сертификат был выдан правильным CA = клиент имеет право вызывать вашу службу.

Доверенных эмитентов также можно настроить на системном уровне с помощью netsh - отметьте sslctlidentifier и sslctlstorename. Эта конфигурация будет глобальной для всего порта (веб-сайта), поэтому, если у вас есть несколько веб-приложений или сервисов с разными требованиями, размещенными на одном и том же порту, это не подойдет вам.

3 голосов
/ 29 ноября 2011

Да, IIS проверяет сертификат клиента для взаимной аутентификации, вам не нужно проверять его в коде веб-службы.
Отметьте эту статью , она будет более понятной.

...