Прием клиентских сертификатов от любого ЦС - PullRequest
4 голосов
/ 05 октября 2008

Я настраиваю поддержку для пользователей, чтобы войти с клиентскими сертификатами. К сожалению, IIS отказывается признать любой сертификат, не связанный с установленным центром сертификации ( см. Эту статью ).

Поскольку эта функция реализована только для удобства пользователей, было бы здорово разрешить любой клиентский сертификат. Есть ли способ сделать это?

Мой сервер работает под управлением Windows Server 2003 и IIS 6, но поведение на IIS 7, работающем локально, не отличается. Если бы IIS 7 можно было настроить для поддержки какого-либо клиентского сертификата, я бы смог изменить его (учитывая, что решение для IIS 6 не доступно).

Ответы [ 4 ]

2 голосов
/ 05 октября 2008

Я думаю, что нормальным способом является выдача им сертификатов, а затем настройка IIS для принятия вашего сертификата в качестве root.

1 голос
/ 29 октября 2008

Реализация этого класса:

    public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
    {
        public TrustAllCertificatePolicy() {}

        public bool CheckValidationResult(ServicePoint sp, X509Certificate cert,WebRequest req, int problem)
        {
            return true;
        }
    }

Установите его, используя следующую строку кода. После этого будут приняты любые сертификаты, истек ли срок действия, не совпадает ли имя и т. Д.

 System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
0 голосов
/ 05 октября 2008

WCF позволяет написать пользовательский обработчик сертификата X.509 . В коде вы можете выполнить некоторую проверку, например, сравнить отпечаток с известным значением в базе данных.

0 голосов
/ 05 октября 2008

Я думаю, вы можете добавить новый root CA сертификат с помощью команды certmgr

certmgr --add -c -m Trust <CA_cert_DER_fmt>

Примечание. В отличие от UNIX, Windows управляет сертификатами для всех приложений одновременно , что может иметь последствия для безопасности, поэтому остерегайтесь этого

...