Поделиться через


Добавление сертификатов в хранилище сертификатов

[CAPICOM — это 32-разрядный компонент, доступный для использования в следующих операционных системах: Windows Server 2008, Windows Vista, Windows XP. Вместо этого используйте платформа .NET Framework для реализации функций безопасности. Дополнительные сведения см. в разделе Альтернативы использованию CAPICOM.]

Сертификаты можно добавлять в хранилища сертификатов или удалять из них, если хранилище открыто с разрешением на чтение и запись. Разрешения на чтение и запись не предоставляются хранилищам Active Directory. Хотя сертификаты можно добавлять в хранилища памяти или удалять из них, изменения в хранилищах памяти не сохраняются между сеансами.

Сертификаты можно добавить в хранилище сертификатов, открытое с разрешением на чтение и запись, с помощью метода Add . Сертификат можно удалить из хранилища сертификатов, открытого с разрешением на чтение и запись, с помощью метода Remove . Новые хранилища можно создавать и сохранять в расположениях CAPICOM_CURRENT_USER_STORE и CAPICOM_LOCAL_MACHINE_STORE. Вновь созданные хранилища в любом из этих расположений можно открыть с разрешением на чтение и запись.

В следующем примере открыты два хранилища сертификатов. Сертификаты субъектов, фамилии которых начинаются с F, извлекаются из хранилища Active Directory. Затем CAPICOM_CURRENT_USER_STORE, CAPICOM_CA_STORE хранилище открывается как хранилище для чтения и записи, а первый сертификат из коллекции сертификатов в хранилище Active Directory добавляется в сертификаты в CAPICOM_CA_STORE.

В целях демонстрации в примере показано открытие магазинов в расположениях CAPICOM_MEMORY_STORE, CAPICOM_CURRENT_USER_STORE и CAPICOM_LOCAL_MACHINE_STORE. В этом примере показан экспорт всех сертификатов из открытого хранилища, запись экспортированных сертификатов в файл, их считывание и импорт в другое хранилище. Недавно импортированные сертификаты перечисляются и отображаются.

При любой ошибке CAPICOM возвращается отрицательное десятичное значение Err.Number . Дополнительные сведения см. в разделе CAPICOM_ERROR_CODE. Сведения о положительных десятичных значениях Err.Number см. в разделе Winerror.h.

В следующем примере показано открытие хранилищ сертификатов с помощью ранней привязки в объявлении объектов Store и при создании экземпляра этих объектов.

Sub AddCert()
On Error GoTo ErrorHandler
' The following shows two different ways to declare and
' create a store object.

Dim myADstore As New Store

Dim myCAstore As Store
Set myCAstore = New Store

' In this example, the Active Directory store will be searched for a 
' certificate with a subject name that begins with the letter F. 
' This is done by using the string "SN=F*" as the name of the store.

Dim SubjectNameSN As String
SubjectNameSN = "SN=F*"

' Active Directory stores can only be opened with read-only
' access.

myADstore.Open CAPICOM_ACTIVE_DIRECTORY_USER_STORE,
                SubjectNameSN , CAPICOM_STORE_OPEN_READ_ONLY

'  This example assumes that the store opened and that
'  at least one certificate was returned.
'  A complete application would ensure that at least one certificate
'  was in the store before proceeding and would
'  also select one or more of the certificates returned
'  to be added instead of using the first certificate
'  in the collection.

'  Open the MY store so that a certificate can be added.

myCAstore.Open CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
                    CAPICOM_STORE_OPEN_READ_WRITE

myCAstore.Add myADstore.certificates.Item(1)

' Release the two store objects.

Set myCAstore = Nothing
Set myADstore = Nothing
Exit Sub

ErrorHandler:
If Err.Number > 0 Then
    MsgBox "Visual Basic error found:" & Err.Description
Else
    MsgBox "CAPICOM error found : " & Err.Number
End If
End Sub