Проблема с сертификатом при работе через Sql

Тема в разделе "SQL", создана пользователем ptybn8407, 19 сен 2011.

  1. ptybn8407

    ptybn8407 Гость

    Была создана сборка, задача которой - скачивать файл посредством сертифика с заданного сайта. Я вытаскиваю сертификаты для того, чтобы залогиниться и скачать файлы через X509Storage.
    При использовании сборки в стороннем приложении она прекрасно функционирует. Возникла идея загнать ее в SQL, чтобы оттуда посредством джобов использовать в задданое время. Но(!) при вызове запросом метода из сборки не получается вытащить не то, что нужный сертификат - а вообще любой, хранящийся на данном серваке и спокойно получаемый при запуске приложения.

    [TSQL]USE Storage
    GO
    IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetFile]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
    DROP FUNCTION [dbo].[GetFile]
    IF EXISTS (SELECT * FROM sys.assemblies asms WHERE asms.name = N'BR_ReturnPath' and is_user_defined = 1)
    DROP ASSEMBLY [BR_ReturnPath]
    GO


    USE master
    GRANT UNSAFE ASSEMBLY TO sa
    go
    alter database [Storage] set trustworthy on
    go


    use Storage
    CREATE ASSEMBLY BR_ReturnPath
    FROM 'C:\!BR_NEW\BR_SQL\BR_ReturnPath.dll'
    WITH PERMISSION_SET = UNSAFE
    GO
    CREATE FUNCTION GetFile
    (
    @authenticateURL nvarchar(255)
    ,@fileURL nvarchar(255)
    ,@proxyHost nvarchar(255)
    ,@proxyPort int
    ,@proxyUser nvarchar(255)
    ,@proxyPassword nvarchar(255)
    ,@thumbprint nvarchar(255)
    )
    RETURNS nvarchar(255)
    EXTERNAL NAME BR_ReturnPath.BR_Support.GetFile;
    go


    declare @result nvarchar(255)
    set @result = dbo.GetFile('https://SomeAuthenticatePage',
    'https://SomeFileDownloadPage',
    'ProxyDomain',
    ProxyPort,
    'ProxyUser',
    'ProxyPassword',
    'CertificateThumbprint') select @result
    print @result[/TSQL]


    Так вот самое интересное, что при вытаскивании


    X509Certificate2 thisCert = null;
    X509Store store = new X509Store(StoreName.My,StoreLocation.LocalMachine);
    store.Open(OpenFlags.OpenExistingOnly);
    X509Certificate2Collection collCert = store.Certificates.Find(X509FindType.FindByThumbprint,strThumbprint,true);
    if (collCert.Count > 0)
    {
    thisCert = collCert[0];
    }

    значение store.Count равно 0... При этом при использовании dll в стороннем приложении все прекрасно скачивается(сертификаты вытаскиваются и выбирается рабочий), а когда я через SQL management запросом пытаюсь получить данные - он не может вытащить сертификаты. Везде значение Count равно 0, и у store, и у, разумеется, collCert.
    Проблема мне кажется в том, что при запуске приложения права на него как бы принадлежат теущему пользователю и поэтому сертификты спокойно забираются, а уже из них вытаскивается нужный. А при запуске из SQL права хрен знает чьи - в итоге X509Storage пустое. Как обойти эту проблему - бьюсь уже полдня(((
     
Загрузка...
Похожие Темы - Проблема сертификатом при
  1. c0de3r
    Ответов:
    5
    Просмотров:
    119
  2. DobermannTT
    Ответов:
    10
    Просмотров:
    133
  3. SoulPaladin
    Ответов:
    4
    Просмотров:
    122
  4. Artael
    Ответов:
    1
    Просмотров:
    109
  5. ENSLER
    Ответов:
    0
    Просмотров:
    102

Поделиться этой страницей