Получение возвращенного сертификата
Когда центр сертификации (ЦС) проверяет сведения об удостоверениях запрашивающего и удостоверяется в том, что запрашивающий является владельцем закрытого ключа и что данные об этом запрашивающей организации являются точными, ЦС создает сертификат X.509, подписывает его, упаковывает его с другими необходимыми сертификатами (например, собственным сертификатом ЦС) в сообщении. и отправляет сообщение инициатору запроса. Сообщение может быть сообщением PKCS #7 или ответом CMC (шаблоны версии 2 приводят к ответу CMC).
Принимающее приложение передает сообщение элементу управления регистрации сертификатов. Затем элемент управления регистрацией сертификатов открывает сообщение и извлекает сертификаты. Пользователю будет предложено диалоговое окно с вопросом о том, будет ли пользователь принимать самозаверяемые сертификаты в корневом хранилище. Если пользователь принимает корневой сертификат, остальные сертификаты (за исключением сертификата инициатора запроса) помещаются в хранилище ЦС. Сертификат инициатора запроса помещается в хранилище сертификатов, указанное инициатором запроса в свойстве MyStoreName .
В следующем примере показано, как использовать Visual Basic Scripting Edition (VBScript) и HTML на веб-странице для получения и хранения возвращенных сертификатов.
<HTML>
<TITLE>Certificate Enrollment Acceptance HTML Page
</TITLE>
<OBJECT classid="clsid:127698E4-E730-4E5C-A2b1-21490A70C8A1"
CODEBASE="xenroll.dll"
id=IControl >
</OBJECT>
<SCRIPT language="VBScript">
<!--
Option Explicit
'Accept the certificate subroutine.
Sub AcceptCertSub
On Error Resume Next
' Get the issued certificate.
' The following value, "PKCS7", represents the received message.
' Actually, this value must be supplied through the design of
' the receiving application.
' A possible implementation is as follows: after using
' ICertRequest.Submit to submit the PKCS #10, call
' ICertRequest.GetLastStatus to confirm successful certificate
' creation, and then call ICertRequest.GetCertificate to retrieve
' the certificate.
document.result.result.value = "PKCS7"
Call IControl.AcceptPKCS7(document.result.result.value)
If err.Number = 0 Then
navigate "..\done.htm"
Else
Alert "Error: " & Hex(err)
End If
End sub
' Decline the certificate sub-routine.
Sub NoAcceptCertSub
navigate "..\notdone.htm"
End sub
-->
</SCRIPT>
</BODY>
</HTML>