| ||||
| ||||
Выполняю запрос на отзыв сертификата. Строка отзыва SN=5136A5C5000100000153,RR=0,RC=na подписана на действующем сертификате пользователя. Роль пользователя прописана в политиках для выполнения метода SubmitRequest объекта RevokeRequest. Отправляется запрос на отзыв по установленному каналу связи на действующем сертификате пользователя. Порядок RDN в действующем сертификате и сертификате, подлежащем отзыву совпадают (всего в сертификатах 2 секции - CN и Е). При вызове метода возникает ошибка Server: XML Parser failed at linenumber 2, lineposition 62, reason is: Semicolon expected. HRESULT=0x80004005 никакой дополнительной информации нет. В чем может быть проблема ? | ||||
Ответы: | ||||
| ||||
А в UNICODE строку запроса на отзыв не забыли конвертнуть? | ||||
| ||||
Я использую пример на VB6, поэтому там не требуется явной конвертации, насколько я понимаю. | ||||
| ||||
Пример на VB: Option Explicit Public Enum RevokeReasonEnum CRL_REASON_UNSPECIFIED = 0 CRL_REASON_KEY_COMPROMISE = 1 CRL_REASON_CA_COMPROMISE = 2 CRL_REASON_AFFILIATION_CHANGED = 3 CRL_REASON_SUPERSEDED = 4 CRL_REASON_CESSATION_OF_OPERATION = 5 CRL_REASON_CERTIFICATE_HOLD = 6 UNHOLD_CERT_REASON = -1 End Enum Function GenerateRevokeRequest( _ ByVal oCertificateToSign As CAPICOM.Certificate, _ ByVal sSerialNumberToRevoke As String, ByVal RevocationReason As RevokeReasonEnum, _ ByVal sRevocationComments As String, _ Optional ByVal sHoldDuration As String = "") Dim sUnicodeString As String sUnicodeString = "SN=" & sSerialNumberToRevoke & _ ",RR=" & CStr(RevocationReason) & ",RC=" & sRevocationComments If Len(sHoldDuration) > 0 Then sUnicodeString = sUnicodeString & ",HD=" & sHoldDuration End If Dim oSignedData As CAPICOM.SignedData: Set oSignedData = New CAPICOM.SignedData oSignedData.Content = sUnicodeString Dim oSigner As CAPICOM.Signer: Set oSigner = New CAPICOM.Signer oSigner.Certificate = oCertificateToSign oSigner.Options = CAPICOM.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY GenerateRevokeRequest = oSignedData.Sign(oSigner, False, CAPICOM.CAPICOM_ENCODE_BASE64) End Function ’ Пример вызова функции GenerateRevokeRequest ’ Сначала надо выбрать сертификат для отзыва Dim Store As CAPICOM.Store: Set Store = New CAPICOM.Store: Store.Open Dim Certificates As CAPICOM.Certificates Set Certificates = Certificates.Select("DocSamples", "Выберите сертификат для отзыва:") Dim Certificate As CAPICOM.Certificate: Set Certificate = Certificates.Item(1) ’ Затем надо определить серийный номер сертификата, который необходимо отозвать Dim sSerialNumberToRevoke As String sSerialNumberToRevoke = oCertificate.SerialNumber ’ Затем надо выбрать сертификат для подписи запроса Set Certificates = Certificates.Select("DocSamples", "Выберите сертификат для подписи запроса:") Set Certificate = Certificates.Item(1) MsgBox GenerateRevokeRequest (Certificate, sSerialNumberToRevoke, CRL_REASON_KEY_COMPROMISE, _ "Секретный ключ от этого сертификата был утерян во время перезда") | ||||