Проверки в .NET
(1 чел.) (1) гость
  • Страница:
  • 1

ТЕМА: Проверки в .NET

Проверки в .NET 3 года, 11 мес. назад #1817

  • Aringazin
  • Осваиваюсь на форуме
  • Постов: 22
  • Репутация: 0
Добрый день, коллеги!
У меня возникло несколько вопросов по новой библиотеке. Проект написан на asp.net (c#).
Ранее мы уже проводили с вами интеграцию с библиотекой IolaCOM.

Опишу как было и как собираюсь сделать.

Старая - IolaCOM.dll.
в апплете (IolaApplet):
1) проверка цифровой подписи (digital signature) - verifyXmlFile()
серверная часть:
2) проверка действительности сертификационного пути (trust) - iolaCOM.ValidateDoc()
3) проверка срока действия регистрационного свидетельства (time) - certificate.NotAfter, certificate.NotBefore
4) проверка статуса регистрационного свидетельства (revocation) - iolaCom.ValidateDoc()
5) проверка параметров формата (formatting) - использовал iolaCOM.X509Certificate2, вытаскивал policy = "1.2.398.3.3.2.1", "1.2.398.3.3.2.3" - проверял, что ключ предназначен для подписывания данных


Теперь собственно о модификациях:
Новая - ManagedOpenSsl.dll

в апплете (KncaApplet):
1) проверка цифровой подписи (digital signature) - verifyXml()
3) проверка срока действия регистрационного свидетельства (time) - можно ли проверять с помощью getNotAfter(), getNotBefore()? Или нужно производить проверку в серверной части?
5) проверка параметров формата (formatting) - мы используем только подписывание данных, поэтому при выборе ключа у нас storageAlias всегда "PKCS12". Если выбрать ключ для аутентификации ,
document.getElementById('KncaApplet').getKeys(storageAlias, storagePath, password, keyType) возвращает ошибку и можно полагать, что данный ключ не "PKCS12". Следовательно если нет ошибки, то ключ правильный, верно?
серверная часть:
2) проверка действительности сертификационного пути (trust) - как осуществить данную проверку?
4) проверка статуса регистрационного свидетельства (revocation) - OCSPCheck() - из примера dotnet_wrapper_example

по Проверке DN имени регистрационного свидетельства - вопросов нет, TSP не проверяем.

Re: Проверки в .NET 3 года, 11 мес. назад #1819

  • Aringazin
  • Осваиваюсь на форуме
  • Постов: 22
  • Репутация: 0
Срочно жду ответа!!!

Re: Проверки в .NET 3 года, 11 мес. назад #1820

  • yerlan_kabylov
  • Новый участник
  • Постов: 3
  • Репутация: 0
Добрый день!
Ответы на 2) и 4) вопросы есть там же в dotnet_wrapper_example. Ниже код:
 //Проверка цепочки до корневого сертификата
                    //считывание корневого сертификата с файла
                    using (BIO rootBio = BIO.File("new_NCA_RSA.cer", "rb"))
                    {
                        using (X509Certificate rootCert = X509Certificate.FromDER(rootBio))
                        {
                            using (CryptoKey rootPublicKey = rootCert.PublicKey)
                            {
                                //проверка цепочки корневого серификата на самого себя
                                bool isRightRootCert = rootCert.Verify(rootPublicKey);
                                if (isRightRootCert)
                                {
                                    Console.WriteLine("Проверка корневого сертификата \t\t\t Успешно");
                                }
                                else
                                {
                                    Console.WriteLine("Проверка корневого сертификата \t\t\t Не Успешно");
                                }

                                //проверка цепочки серификата на корневой сертификат
                                bool isRightCert = cert.Verify(rootPublicKey);
                                if (isRightCert)
                                {
                                    Console.WriteLine("Проверка цепочки до корневого сертификата  \t Успешно");
                                }
                                else
                                {
                                    Console.WriteLine("Проверка цепочки до корневого сертификата \t Не Успешно");
                                }
                            }

                        }
                    }
                    //проверка по CRL

                    //считывание CRL с файла
                    using (BIO bioCrl = BIO.File("Rsa0.crl", "rb"))
                    {
                        using (X509_CRL crl = X509_CRL.FromDER(bioCrl))
                        {
                         
                            //проверка CRL по дате
                            if (crl.nextUpdate > now && crl.lastUpdate < now)
                            {
                                Console.WriteLine("Проверка CRL по дате прошла \t\t\t Успешно");
                                using (X509StoreContext x509StoreContext = new X509StoreContext())
                                {
                                    //проверка сертификата по CRL на отозванность
                                    int crlCheckRes = x509StoreContext.checkByCrl(crl, cert);
                                    if (crlCheckRes == 1)
                                    {
                                        Console.WriteLine("Проверка на отозванность прошла \t\t Успешно");
                                    }
                                    else
                                    {
                                        Console.WriteLine("Проверка на отозванность прошла \t\t Не Успешно");
                                        Console.WriteLine("****Ваш сертификат отозван****");
                                    }
                                }

                            }
                            else
                            {
                                Console.WriteLine("Проверка CRL по дате прошла \t\t\t Не Успешно");
                                Console.WriteLine("****Ваш CRL недействителе по дате****");

                            }
                        }
                    }
Изменено: 3 года, 11 мес. назад от Murat Seisenov.
  • Страница:
  • 1
FaLang translation system by Faboba