Задача состоит в том, чтобы импортировать сертификат на удаленный сервер (веб-версия сервера win2008/IIS7).
сертификат находится в файле .pfx.
после установки я заметил, что закрытый ключ сохраняется на клиентском сервере (с которого выполняется скрипт) (в C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys), а не на целевом сервере (где установлен сертификат). Из-за этого сертификата нельзя использовать для привязки сайта с ошибкой:
Указанный сеанс входа не существует. Возможно, он уже был прекращен.
Так. Я вижу, что сертификат установлен на удаленном сервере, но закрытый ключ - нет. Что я сделал не так?
Dim pathToPFXFile As String = "\\CertServer\e$\tmp\CPVanitySSLInstall.pfx"
Dim passwordForPFXFile As String = "xxx"
Dim WinVanitySSLTable As Data.DataTable
Dim cert, cert1 As X509Certificate2
Dim certs As X509Certificate2Collection
Dim store As X509Store
cert = New X509Certificate2(pathToPFXFile, passwordForPFXFile, X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet Or X509KeyStorageFlags.Exportable)
store = New X509Store("\\DestinationServerName\My", StoreLocation.LocalMachine)
If (cert IsNot Nothing) Then
store.Open(OpenFlags.MaxAllowed)
store.Add(cert)
store.Close()
End If
Кстати, когда я запускаю этот скрипт на самом целевом сервере, он работает полностью, как и ожидалось. Кроме этого, я проверил доступ к хранилищу машинных ключей на удаленном сервере \DestinationServerName\C$\ProgramData\Microsoft\Crypto\RSA\MachineKeys, и все в порядке.
psexec "\\RemoteServerName" certutil -f -p "PasswForPfxFile" -importpfx "PFXFileFullPath"
2. использовать объект IIS.CertObj. (Поддержка IIS6 должна быть установлена на серверах win2008/IIS7) Еще один возможный способ использования ADSI... что-то вроде:DirectoryEntry(@"IIS://localhost/W3SVC/1/Root")
Хотя я не проверял... - person AlexS   schedule 01.02.2013