| ||||
| ||||
Добрый день. У меня возникла проблема. В своей программе я с помощью CEnroll2 создаю запрос на сертификат. Далее этот запрос отправляется по почте на УЦ где происходит выдача. Так вот, создание нового пользователя проходит на ура, а вот сертификат по этому же запросу не выдается. Говорит "запрос принадлежит другому пользователю". Может я делаю что-то не так? //-----------код на c#------------------ string req_string =""; if(tb_Email.Text=="") { MessageBox.Show("Отсутствует адрес электронной почты!"); return; } req_string+="1.2.840.113549.1.9.1="+tb_Email.Text+" , "; if(cb_Strana.SelectedIndex<0) { MessageBox.Show("Отсутствует страна!"); return; } req_string+="2.5.4.6="+cb_Strana.SelectedItem.ToString()+" , "; if(tb_Oblast.Text=="") { MessageBox.Show("Отсутствует название области!"); return; } req_string+="2.5.4.8="+tb_Oblast.Text+" , "; if(tb_NasPunkt.Text=="") { MessageBox.Show("Отсутствует название области!"); return; } req_string+="2.5.4.7="+tb_NasPunkt.Text+" , "; if(tb_MestoRaboti.Text=="") { MessageBox.Show("Отсутствует название организации!"); return; } req_string+="2.5.4.10="+tb_MestoRaboti.Text+" , "; if(tb_Podrazdelenie.Text=="") { MessageBox.Show("Отсутствует название подразделения!"); return; } req_string+="2.5.4.11="+tb_Podrazdelenie.Text+" , "; if((tb_Familiya.Text=="")||(tb_Imya.Text=="")&&(tb_Otchestvo.Text=="")) { MessageBox.Show("Заполните поля Фамилия Имя отчество."); return; } if(checkBox16.Checked) { if(tb_Psevdonim.Text=="") { MessageBox.Show("А где псевдоним?"); return; } req_string+="2.5.29.17="+tb_Psevdonim.Text+" , "; } req_string+="2.5.4.3="+tb_Familiya.Text+" "+tb_Imya.Text+" "+tb_Otchestvo.Text+" , "; if(tb_Adres.Text=="") { MessageBox.Show("Заполните поле Адрес!"); return; } req_string+= "2.5.4.9="+tb_Adres.Text+" , "; if(tb_Dolzhnost.Text=="") { MessageBox.Show("Заполните поле Адрес!"); return; } req_string+="2.5.4.12="+tb_Dolzhnost.Text; string key_usage = ""; if(lb_KeyUsage.SelectedIndex<0) { MessageBox.Show("Укажите хотябы одно назначение ключа!"); return; } foreach(int i in lb_KeyUsage.SelectedIndices) { key_usage+=m_config.GetKeyUsageOID(i)+", "; } key_usage = key_usage.Substring(0,key_usage.Length-2); string cfgname = Application.ExecutablePath; cfgname = cfgname.Substring(0, cfgname.LastIndexOf("\\", cfgname.Length-1,cfgname.Length-1)); cfgname+="\\reqest.p10"; CEnroll2 Enroll = new CEnroll2(); Enroll.ProviderType = m_config.GetCSPId(m_config.GetCurrentCSP()); Enroll.ProviderName = m_config.GetCSPName(m_config.GetCurrentCSP()); Enroll.KeySpec = 2; Enroll.UseExistingKeySet = 0; Enroll.createFilePKCS10(req_string,key_usage,cfgname); | ||||
Ответы: | ||||
| ||||
В КриптоПро УЦ порядок следования полей имени субъекта фиксированный. См. http://www.cryptopro.ru/CryptoPro/forum/myforum.asp?q=1354 | ||||
| ||||
Спасибо, разобрался. Еще вопрос, крипто-про поддерживает поле pseudonim? OID value: 2.5.4.65 pseudonym ATTRIBUTE ::= { SUBTYPE OF name WITH SYNTAX DirectoryString ID {id-at-pseudonym} } | ||||
| ||||
Нет, поддерживаются только те, что описаны по приведённой мной ссылке (и в документации на УЦ) | ||||