VB. net - Импортировать сертификат, привязать к закрытому ключу и установить на токен USB PKI - PullRequest
1 голос
/ 17 июня 2020

Итак, я пытаюсь импортировать существующий сертификат (в формате DER, CER и / или PEM) на USB-токен PKI, у которого уже есть закрытый ключ, соответствующий сертификату.

Сначала в общем, я могу успешно добавить сертификат в хранилище сертификатов windows (My / Personal), используя код в VB. net. Во-вторых, я даже могу сопоставить и привязать сертификат к ключу (используя для этого certutil -repairstore, выполняемый из моей программы vb. net)

Теперь проблема: приведенная выше часть добавляет сертификат в магазин P C и сопоставляет его с ключом для использования на этом компьютере. Однако сертификат фактически не добавляется в токен USB PKI. Это означает, что если я перенесу его на другой P C, у меня будет только закрытый ключ.

Теперь я считаю, что его можно будет добавить к токену (у которого есть собственный CSP btw.)

Причина в том, что если я вставлю токен в P C и импортирую сам сертификат непосредственно в диспетчер сертификатов через MM C в windows, он будет автоматически сопоставить с закрытым ключом И также установить его на самом токене.

Такое ощущение, что это должно быть возможно и с помощью кодирования, не так ли? Я тоже пробовал через PowerShell, но не повезло. certutil может импортировать сертификаты непосредственно на токен, однако, только если вы предоставите файл PFX, которого у меня нет, так как закрытый ключ доступен только для токена.

В настоящее время импорт осуществляется сделано: Dim collection = New X509Certificate2Collection ()

    collection.Import(V_EndEntity)

    Dim store = New X509Store(StoreName.My, StoreLocation.CurrentUser)

    store.Open(OpenFlags.MaxAllowed)

    Try
        For Each certificate As X509Certificate2 In collection
            store.Add(certificate)
        Next
    Finally
        store.Close()
    End Try

Есть предложения?

...