Partager via


Ajout de certificats à un magasin de certificats

[CAPICOM est un composant 32 bits uniquement disponible pour une utilisation dans les systèmes d’exploitation suivants : Windows Server 2008, Windows Vista, Windows XP. Utilisez plutôt .NET Framework pour implémenter des fonctionnalités de sécurité. Pour plus d’informations, consultez Alternatives à l’utilisation de CAPICOM.]

Les certificats peuvent être ajoutés ou supprimés des magasins de certificats si le magasin est ouvert avec l’autorisation de lecture/écriture. L’autorisation de lecture/écriture n’est pas accordée aux magasins Active Directory. Bien que des certificats puissent être ajoutés ou supprimés des magasins de mémoire, les modifications apportées aux magasins de mémoire ne sont pas conservées entre les sessions.

Les certificats peuvent être ajoutés à un magasin de certificats ouvert avec l’autorisation de lecture/écriture à l’aide de la méthode Add . Un certificat peut être supprimé d’un magasin de certificats ouvert avec l’autorisation de lecture/écriture à l’aide de la méthode Remove . De nouveaux magasins peuvent être créés et enregistrés dans les emplacements CAPICOM_CURRENT_USER_STORE et CAPICOM_LOCAL_MACHINE_STORE. Les magasins nouvellement créés dans l’un de ces emplacements peuvent être ouverts avec l’autorisation de lecture/écriture.

Dans l’exemple suivant, deux magasins de certificats sont ouverts. Les certificats des sujets dont le nom commence par F sont récupérés à partir du magasin Active Directory. Le magasin CAPICOM_CURRENT_USER_STORE CAPICOM_CA_STORE est ensuite ouvert en tant que magasin en lecture/écriture et le premier certificat de la collection de certificats dans le magasin Active Directory est ajouté aux certificats dans le CAPICOM_CA_STORE.

À des fins de démonstration, l’exemple montre l’ouverture de magasins dans les emplacements CAPICOM_MEMORY_STORE, CAPICOM_CURRENT_USER_STORE et CAPICOM_LOCAL_MACHINE_STORE. L’exemple montre l’exportation de tous les certificats à partir d’un magasin ouvert, l’écriture des certificats exportés dans un fichier, leur lecture et leur importation dans un autre magasin. Les certificats nouvellement importés sont énumérés et affichés.

En cas d’erreur CAPICOM, une valeur décimale négative Err.Number est retournée. Pour plus d’informations, consultez CAPICOM_ERROR_CODE. Pour plus d’informations sur les valeurs décimales positives de Err.Number, consultez Winerror.h.

L’exemple suivant illustre l’ouverture de magasins de certificats à l’aide de la liaison anticipée dans la déclaration des objets Store et la création d’une instance de ces objets.

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