We’ve seen a few instances of the following error message on 64 bit servers when IIS 7.0 is attempting to process a pending certificate request:
Complete Certificate Request
There was an error while performing this operation.
Details:
CertEnroll::CX509Enrollment::p_InstallResponse: ASN1 bad tag value met. 0x8009310b (ASN: 267)
This error seems to mean that the private key (created when the certificate request was made) does not match the public key (the .crt file). The keypair is not successfully joined into a working SSL certificate.
So far this behavior seems most common with .crt files (instead of the .cer files many of us are more used to) issued by one specific Certification Authority—which will remain nameless here.
The error shows up after reaching the point in the process where you ‘specify certificate authority response’ and guide the wizard to the ‘File name containing the certification authority’s response…’ (the .crt file).
So far there seem to be two solutions.
Solution 1:
Verisign has a support article that matches this error message: https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=S:SO8467&actp=…. Their recommendation seems to be to replace the certificate with a new one. This method has worked for at least one of my customers in this place with a GoDaddy certificate. All they had to do was make a new certificate request (CSR text file), log into the the Godaddy web interface and re-key (we chose re-key rather than re-issue) their certificate. The new file processed fine.
Solution 2:
Begin by importing the .crt file into the Personal certificate store for the local computer. (Start button > Run: MMC > File Menu > Add/Remove Snap-in > highlight Certificates snap-in and click the ADD button > select Computer Account and click Finish > Click OK > drill into Personal > Certificates > right-click and select All Tasks > select Import > guide to the .crt file.) At this point your certificate is basically a half-certificate. It is still missing its private key.
Second, double-click the crt certificate file you just imported, select the Details tab, scroll all the way down to Thumbprint and highlight Thumbprint. In the lower pane, block and copy all the letters of the thumbprint. Paste the thumbprint characters into notepad. Open the command prompt and run this command: Certutil /?
The command you’ll want to run is:
certutil -repairstore my «{insert all of the thumbprint characters here}»
When you see the response: “CertUtil: -repairstore command completed successfully” you should have a private key associated with the .crt file in the personal store. There should no longer be any need to run through the “Complete Certificate Request…” wizard. The certificate should show up in the IIS Manager’s list of server certificates at this point. It should also be available in the SSL Certificates drop-down list when attempting to edit the https binding for a website.
Incidentally, a common way of attempting to deal with this error is to take the .p7b file from the Certification Authority and import the CA’s certificates into the Trusted and Intermediate stores. As far as I can tell, this approach has no useful effect upon this problem.
Other relevant links:
https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=S:SO8467&actp=…
http://blogs.msdn.com/vijaysk/archive/2008/11/25/certenroll-cx509enrollment-p-installresponse-asn1-b…
Author: Christopher T. Haun
I’m loading a .p7b certificate file into memory and then calling CertCreateCertificateContext on it, but it fails with the error «ASN1 bad tag value met.».
The call look like this:
m_hContext = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, pbCertEncoded, dwCertEncodedLen);
This returns NULL and GetLastError() returns the error mentioned above.
I created the certificate file by dragging a certificate out of the settings in IE, which then does an automatic export to a file.
What am I doing wrong?
Thanks!
asked Nov 10, 2009 at 14:20
3
Try to open your certificate by some asn.1 editor.
Probably your certificate has been exported incorrectly or size of the certificate you pass to the api is wrong… Rather the second one option (incorrect cert construction or passing).
I found here the info that the encoding you try to use is not fully supported (see possible error values).
altocumulus
21.1k13 gold badges61 silver badges83 bronze badges
answered Nov 10, 2009 at 15:21
2
You have to use CertOpenStore()
instead:
HCERTSTORE hCertStore = CertOpenStore(
CERT_STORE_PROV_FILENAME,
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
NULL,
CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG,
pszFilePath));
CertCreateCertificateContext()
supports one certificate only, whereas PKCS #7 file can contain many.
Quote from MSDN:
CERT_STORE_PROV_FILENAME
Initializes the store with certificates, CRLs, and CTLs from a file. The provider opens the file and first attempts to read the file as a serialized store, then as a PKCS #7 signed message, and finally as a single encoded certificate.
After the certificate store is open, you can use CertEnumCertificatesInStore()
to retrieve certificate context of individual certificates from store.
answered Mar 17, 2015 at 8:44
2
Make sure the certificate is in binary format.
I had similar issue when the certificate was in «Base-64 encoded X.509».
It was fixed when i used the same certificate in «DER encoded binary X.509»
You can do this easily on windows by manually importing into cert store and then exporting using the desired format.
Certificate can then be used to be installed on other machines using winapi functions.
answered Apr 24, 2017 at 15:59
posix99posix99
3573 silver badges13 bronze badges
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро УЦ 1.4
»
ASN1 bad tag value met при вызове SubmitRequest
Maxim Korobov |
|
Статус: Активный участник Группы: Участники
|
Вызываю через SOAP метод SubmitRequest. Другие методы работают, этот возвращает: Если тот же запрос вставлять в поле открытого в браузере WEB-интерфейса (путь https://<Сервер>/certsrv/), то запрос проходит успешно. Сертификат можно скачать. Пример запроса: Возможно, надо что-то другое вызывать, не метод SubmitRequest. Прошу это проверить. Мне надо на клиенте по готовым запросам сертификата получать готовые подписанные сертификаты, отправляя данные на удаленный ЦР. |
|
|
Kirill Sobolev |
|
Статус: Сотрудник Группы: Участники Поблагодарили: 177 раз в 168 постах |
Метод SubmitRequest принимает запросы вида PKCS7(PKCS10). |
Техническую поддержку оказываем тут |
|
|
WWW |
Maxim Korobov |
|
Статус: Активный участник Группы: Участники
|
В «Руководстве программиста» написано «PKCS#7 Base64 encoded». Разве представленный мной запрос не в должной форме? Еще, я не понимаю, как соотносятся запросы сертификатов с пользователями. Например, чтобы выпустить сертификат, пользователь уже должен существовать (быть создан раньше), так? То есть последовательность такая: создается пользователь, создается запрос на первый сертификат, загружается полученный сертификат, используется. При приближении окончания срока действия сертификата, требуется дополнительное обращение для получения нового сертификата на основе текущего. |
|
|
Kirill Sobolev |
|
Статус: Сотрудник Группы: Участники Поблагодарили: 177 раз в 168 постах |
В «Руководстве программиста» все правильно написано — нужен PKCS#7, внутри которого уже собственно лежит запрос PKCS#10. Цитата: Например, чтобы выпустить сертификат, пользователь уже должен существовать (быть создан раньше), так? То есть последовательность такая: Совершенно верно. Хотя сертификат можно сделать и не на основе текущего — опять же используя метод SubmitFirstCertRequest. |
Техническую поддержку оказываем тут |
|
|
WWW |
Maxim Korobov |
|
Статус: Активный участник Группы: Участники
|
Kirill Sobolev написал: В «Руководстве программиста» все правильно написано — нужен PKCS#7, внутри которого уже собственно лежит запрос PKCS#10. А какие функции CryptoAPI в этом участвуют? Если ли пример или план действий по кодированию PKCS#10 еще и в PKCS#7? Kirill Sobolev написал: Совершенно верно. Хотя сертификат можно сделать и не на основе текущего — опять же используя метод SubmitFirstCertRequest. Текущий пользователь, как я понимаю, это зарегистрированный пользователь, на основе сертификата которого вызываются методы. Важно! Не будет ли при этом увеличиваться количество пользователей с одинаковыми именами, но разными сертификатами, пропорционально времени действию 1 сертификата? |
|
|
Maxim Korobov |
|
Статус: Активный участник Группы: Участники
|
Хм… В описании для VB у SubmitFirstCertRequest 3 параметр — как раз необходимый CreateCertForExistingUser. |
|
|
Kirill Sobolev |
|
Статус: Сотрудник Группы: Участники Поблагодарили: 177 раз в 168 постах |
Цитата: А какие функции CryptoAPI в этом участвуют? Если ли пример или план действий по кодированию PKCS#10 еще и в PKCS#7? Те функции, при помощи которых осуществляется подпись. Можно также воспользоваться не CryptoAPI, а классом CAPICOM SignedData. Цитата: Не будет ли при этом увеличиваться количество пользователей с одинаковыми именами не будет. Цитата: В описании для VB у SubmitFirstCertRequest 3 параметр — как раз необходимый CreateCertForExistingUser. в описании для VB неточность, этот параметр действительно не используется. |
Техническую поддержку оказываем тут |
|
|
WWW |
Maxim Korobov |
|
Статус: Активный участник Группы: Участники
|
Отлично! |
|
|
Kirill Sobolev |
|
Статус: Сотрудник Группы: Участники Поблагодарили: 177 раз в 168 постах |
Нет. |
Техническую поддержку оказываем тут |
|
|
WWW |
Maxim Korobov |
|
Статус: Активный участник Группы: Участники
|
А есть кикие-либо условия на данные пользователя и выпускаемый ему сертификат? |
|
|
Пользователи, просматривающие эту тему |
Guest |
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро УЦ 1.4
»
ASN1 bad tag value met при вызове SubmitRequest
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Hi
I have a problem with unblocking user smartcards. All is well up to the point where the user executes the unblock of his smartcard. Then the clm website turns up an error
ASN1 bad tag value met.
I have checked the eventlogs on the CLM server and here is wath they turned out!
Certificate Lifecycle manager Log
Event Type: Error
Event Source: System.Web
Event Category: None
Event ID: 0
Date: 2009-04-01
Time: 14:44:43
User: N/A
Computer: JUPITER
Description:
Message:Exception of type ‘System.Web.HttpUnhandledException’ was thrown.
Type:System.Web.HttpUnhandledException
Source:System.Web
Stack Trace: at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.content_sm_requests_myrequests_aspx.ProcessRequest(HttpContext context) in c:WINDOWSMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Filesclm446be4807055ce71App_Web_j6dw42df.3.cs:line 0
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Inner Exception:Message:ASN1 bad tag value met.
Type:System.Runtime.InteropServices.COMException
Source:
Stack Trace: at Microsoft.Clm.Interop.capicom.EnvelopedDataClass.Decrypt(String EnvelopedMessage)
at Microsoft.Clm.BusinessLayer.DataEncryption.Decrypt(String encrypted)
at Microsoft.Clm.BusinessLayer.DefaultSecretProvider.ReadXml(String xml)
at Microsoft.Clm.BusinessLayer.DefaultSecretProvider.GetSecrets(Request request)
at Microsoft.Clm.BusinessLayer.SecretsUtility.GetNumberOfSecrets(UserProfile profileTemplate, Request clmRequest)
at Microsoft.Clm.Web.MyRequests.NeedAuthorizationOnRequest(Request clmRequest)
at Microsoft.Clm.Web.MyRequests.GetContinueUrl(Request clmRequest)
at Microsoft.Clm.Web.MyRequests.GetExecuteLinkCell(Request clmRequest, String className)
at Microsoft.Clm.Web.MyRequests.requestsGrid_InitializeRow(Object sender, RowEventArgs e)
at Infragistics.WebUI.UltraWebGrid.UltraWebGrid.OnInitializeRow(UltraGridRow row, Object data)
at Infragistics.WebUI.UltraWebGrid.DBBinding.FillRows(UltraWebGrid grid, RowsCollection rows, IEnumerable datasource)
at Infragistics.WebUI.UltraWebGrid.DBBinding.BindList(IEnumerable datasource)
at Infragistics.WebUI.UltraWebGrid.DBBinding.DataBind(Object dataSource, String dataMember)
at Infragistics.WebUI.UltraWebGrid.UltraWebGrid.DataBind()
at Microsoft.Clm.Web.MyRequests.LoadRequests()
at Microsoft.Clm.Web.MyRequests.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Application Log
Event Type: Warning
Event Source: ASP.NET 2.0.50727.0
Event Category: Web Event
Event ID: 1309
Date: 2009-04-01
Time: 14:44:43
User: N/A
Computer: JUPITER
Description:
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 2009-04-01 14:44:43
Event time (UTC): 2009-04-01 12:44:43
Event ID: c12334475e0c4569adcce85a32361e05
Event sequence: 244
Event occurrence: 3
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/Root/Clm-1-128830615937963451
Trust level: Full
Application Virtual Path: /Clm
Application Path: C:Program FilesMicrosoft Certificate Lifecycle Managerweb
Machine name: JUPITER
Process information:
Process ID: 4872
Process name: w3wp.exe
Account name: RIKSBANKclmWebPool
Exception information:
Exception type: COMException
Exception message: ASN1 bad tag value met.
Request information:
Request URL: https://jupiter/Clm/content/sm/requests/myrequests.aspx?NumberOfDays=-1&FilterRequests=ExecutableRequests
Request path: /Clm/content/sm/requests/myrequests.aspx
User host address: 10.210.5.206
User: RIKSBANKTORKRO
Is authenticated: True
Authentication Type: Basic
Thread account name: RIKSBANKclmWebPool
Thread information:
Thread ID: 1
Thread account name: RIKSBANKclmWebPool
Is impersonating: False
Stack trace: at Microsoft.Clm.Interop.capicom.EnvelopedDataClass.Decrypt(String EnvelopedMessage)
at Microsoft.Clm.BusinessLayer.DataEncryption.Decrypt(String encrypted)
at Microsoft.Clm.BusinessLayer.DefaultSecretProvider.ReadXml(String xml)
at Microsoft.Clm.BusinessLayer.DefaultSecretProvider.GetSecrets(Request request)
at Microsoft.Clm.BusinessLayer.SecretsUtility.GetNumberOfSecrets(UserProfile profileTemplate, Request clmRequest)
at Microsoft.Clm.Web.MyRequests.NeedAuthorizationOnRequest(Request clmRequest)
at Microsoft.Clm.Web.MyRequests.GetContinueUrl(Request clmRequest)
at Microsoft.Clm.Web.MyRequests.GetExecuteLinkCell(Request clmRequest, String className)
at Microsoft.Clm.Web.MyRequests.requestsGrid_InitializeRow(Object sender, RowEventArgs e)
at Infragistics.WebUI.UltraWebGrid.UltraWebGrid.OnInitializeRow(UltraGridRow row, Object data)
at Infragistics.WebUI.UltraWebGrid.DBBinding.FillRows(UltraWebGrid grid, RowsCollection rows, IEnumerable datasource)
at Infragistics.WebUI.UltraWebGrid.DBBinding.BindList(IEnumerable datasource)
at Infragistics.WebUI.UltraWebGrid.DBBinding.DataBind(Object dataSource, String dataMember)
at Infragistics.WebUI.UltraWebGrid.UltraWebGrid.DataBind()
at Microsoft.Clm.Web.MyRequests.LoadRequests()
at Microsoft.Clm.Web.MyRequests.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Custom event details:
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Please |
|
Статус: Новичок Группы: Участники
|
Пытаюсь с помощью КриптоПро Browser plug-in расшифровать xml, зашифрованную gost28147. Вытаскиваю из тега xenc:CipherValue закодированное сообщение, передаю в функцию decrypt, и пытаюсь расшифровать ключом сертификата, которым производилось шифрование: Код:
Метод oEnvelop.Decrypt пытался вызывать тремя способами: Подскажите, как правильно использовать плагин для расшифровки. |
|
|
cross |
|
Статус: Сотрудник Группы: Администраторы, Участники Сказал(а) «Спасибо»: 3 раз |
Derypt ожидает на вход CMS EnvelopedData message. Скорее всего что в теге некоего xml в поле xenc:CipherValue лежит не это. |
Техническую поддержку оказываем тут. |
|
|
|
Please |
|
Статус: Новичок Группы: Участники
|
На вход передаются правильные данные. Их удавалось расшифровать средствами .net, а через апи плагина ошибка «asn1 bad tag value met». Может я неправильно передаю контент методом propset_Content? В моём варианте получается, что в Decrypt передаётся тот же параметр, что устанавливается в propset_Content, это точно правильно? |
|
|
cross |
|
Статус: Сотрудник Группы: Администраторы, Участники Сказал(а) «Спасибо»: 3 раз |
То что вы расшифровали с помощью некоего кода в .NET это не говорит о формате данных ни чего. Decrypt ожидает что данные будут правильно ASN1 закодированное сообщение CMS Enveloped Data. У меня есть большие сомнения что в этом теге именно эти данные находятся. |
Техническую поддержку оказываем тут. |
|
|
|
Please |
|
Статус: Новичок Группы: Участники
|
Хорошо, один момент, кажется, выяснили, параметром метода decrypt должен быть секретный ключ в BASE64 кодировке, находящийся в xml. Я проверил секретный ключ в онлайн сервисе https://lapo.it/asn1js/, получился такой результат: Код:
Это вроде похоже на ASN.1 закодированное сообщение, но метод Decrypt по-прежнему возвращает «asn1 bad tag value met». Подскажите, может с этим секретным ключом нужно ещё что-то сделать? |
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.