使用VB.NET安装x509证书

Ras*_*Rin 1 vb.net x509certificate2

通过vb.net在系统中安装x509证书时出现问题。

安装本身是成功的,但是当我通过代码进行安装时,确实在“证书管理”窗口中获得了一个条目,如下所示:

在此处输入图片说明

但是,当我在“证书管理”窗口中使用导入功能手动安装它时,确实在此证书的列表中得到两个条目:

在此处输入图片说明

我面临的问题是,当我使用此证书执行某些任务(将某些信息传递给第三方服务)时,它仅在手动导入时才有效(证书列表中有两个条目)。看起来像通过代码安装证书时,它没有完全安装。我对用于安装证书的代码进行了大量研究,看起来很简单:

    With ofd
            .Title = "Select Certificate"
            .FileName = ""
            .CheckFileExists = True
            If .ShowDialog <> Windows.Forms.DialogResult.Cancel Then
                Dim cert As New X509Certificate2(.FileName, "xxxxxxx", X509KeyStorageFlags.UserKeySet)
                Dim certStore As New X509Store(StoreName.My, StoreLocation.CurrentUser)
                certStore.Open(OpenFlags.ReadWrite)
                certStore.Add(cert)
                certStore.Close()
            End If
        End With
Run Code Online (Sandbox Code Playgroud)

我想念什么吗?

Yac*_*sad 5

像这样使用X509Certificate2Collection类:

Dim collection = New X509Certificate2Collection()

collection.Import(.FileName, "xxxxxxx", X509KeyStorageFlags.UserKeySet)

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

store.Open(OpenFlags.ReadWrite)

Try
    For Each certificate As X509Certificate2 In collection
        store.Add(certificate)
    Next
Finally
    store.Close()
End Try
Run Code Online (Sandbox Code Playgroud)

这使您可以从文件中导入所有证书。

请注意,CA证书的正确位置是“受信任的根证书颁发机构”文件夹。而且,只有您信任颁发者,才应该将证书导入那里。