Статус: Участник
Группы: Участники
Зарегистрирован: 04.05.2023(UTC) Сообщений: 14 Сказал(а) «Спасибо»: 6 раз
|
Добрый день. Прошу совета по следующей проблеме: используем cryptcp в скрипте PS для создания CSR. Информацию о пользователях берем из домена, зачастую в OU присутствуют запятые. В этом случае происходит отбивка скрипта с ошибкой Error: The string contains an invalid X500 name attribute key, oid, value or delimiter. Пытались экранировать запятые, не помогает. Как можно обойти проблему? Образец скрипта ниже. Код:$login = $login.ToLower()
$ad = Get-ADUser -Identity $login -Properties * | select-object cn,samaccountName,EmailAddress,UserPrincipalName,department,l,company
$name = $ad.cn -replace '[(,),2,]',''
$email = $ad.EmailAddress.ToLower()
$fio = $name -replace '\s$',''
$country = 'RU'
$depart = $ad.department
$rdn = "C=$country,E=$email,CN=$fio,L=$city,S=$state,O=COMPANY,OU=$depart"
.\cryptcp.exe -createrqst -rdn $rdn -exprt -smime -keysize 512 -certusage "1.3.6.1.5.5.7.3.4" -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" $tmppath\user.csr
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 30.06.2016(UTC) Сообщений: 3,450 Сказал «Спасибо»: 53 раз Поблагодарили: 791 раз в 731 постах
|
Автор: AKChugunov Добрый день. Прошу совета по следующей проблеме: используем cryptcp в скрипте PS для создания CSR. Информацию о пользователях берем из домена, зачастую в OU присутствуют запятые. В этом случае происходит отбивка скрипта с ошибкой Error: The string contains an invalid X500 name attribute key, oid, value or delimiter. Пытались экранировать запятые, не помогает. Как можно обойти проблему? Образец скрипта ниже. Код:$login = $login.ToLower()
$ad = Get-ADUser -Identity $login -Properties * | select-object cn,samaccountName,EmailAddress,UserPrincipalName,department,l,company
$name = $ad.cn -replace '[(,),2,]',''
$email = $ad.EmailAddress.ToLower()
$fio = $name -replace '\s$',''
$country = 'RU'
$depart = $ad.department
$rdn = "C=$country,E=$email,CN=$fio,L=$city,S=$state,O=COMPANY,OU=$depart"
.\cryptcp.exe -createrqst -rdn $rdn -exprt -smime -keysize 512 -certusage "1.3.6.1.5.5.7.3.4" -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" $tmppath\user.csr
Здравствуйте. Попробуйте брать компонент имени с запятыми внутри в 2 двойные кавычки. Пример экранирования здесь (STREET=...). |
|
2 пользователей поблагодарили Александр Лавник за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.05.2023(UTC) Сообщений: 14 Сказал(а) «Спасибо»: 6 раз
|
Автор: Александр Лавник Здравствуйте. Попробуйте брать компонент имени с запятыми внутри в 2 двойные кавычки. Пример экранирования здесь (STREET=...). Благодарю за наводку. Попробовали заэкранировать запятую двойными кавычками $rdn = "C=$country,E=$email,CN=$fio,L=$city,S=$state,O=COMPANY,OU=""$depart""" При выполнении скрипта получили ошибку на этапе создания CSR CryptCP 5.0 (c) "Crypto-Pro", 2002-2023. Command prompt Utility for file signature and encryption. Error: Too many files: '?????'. E:\branches\CSP_5_0r3q\branches\CSP_5_0r3q_0\CSP\samples\CPCrypt\Enroll.cpp:849: 0x200000C8 [ErrorCode: 0x200000c8]
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 30.06.2016(UTC) Сообщений: 3,450 Сказал «Спасибо»: 53 раз Поблагодарили: 791 раз в 731 постах
|
Автор: AKChugunov Автор: Александр Лавник Здравствуйте. Попробуйте брать компонент имени с запятыми внутри в 2 двойные кавычки. Пример экранирования здесь (STREET=...). Благодарю за наводку. Попробовали заэкранировать запятую двойными кавычками $rdn = "C=$country,E=$email,CN=$fio,L=$city,S=$state,O=COMPANY,OU=""$depart""" При выполнении скрипта получили ошибку на этапе создания CSR CryptCP 5.0 (c) "Crypto-Pro", 2002-2023. Command prompt Utility for file signature and encryption. Error: Too many files: '?????'. E:\branches\CSP_5_0r3q\branches\CSP_5_0r3q_0\CSP\samples\CPCrypt\Enroll.cpp:849: 0x200000C8 [ErrorCode: 0x200000c8] Если без переменной, а просто строкой задаете OU - ошибка воспроизводится? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 31.05.2016(UTC) Сообщений: 2,225
Сказал(а) «Спасибо»: 547 раз Поблагодарили: 378 раз в 358 постах
|
Автор: AKChugunov При выполнении скрипта получили ошибку на этапе создания CSR
CryptCP 5.0 (c) "Crypto-Pro", 2002-2023. Command prompt Utility for file signature and encryption. Error: Too many files: '?????'. E:\branches\CSP_5_0r3q\branches\CSP_5_0r3q_0\CSP\samples\CPCrypt\Enroll.cpp:849: 0x200000C8 [ErrorCode: 0x200000c8] Разверните все переменные в командной строке и посмотрите, что у Вас представляет из себя итоговая строка.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.05.2023(UTC) Сообщений: 14 Сказал(а) «Спасибо»: 6 раз
|
Автор: Александр Лавник Если без переменной, а просто строкой задаете OU - ошибка воспроизводится? $rdn = "C=$country,E=$email,CN=$fio,L=$city,S=$state,O=COMPANY,OU=""Операционная логистика, ДПиОС""" Ошибка такая же. Отредактировано пользователем 9 августа 2023 г. 14:59:33(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.05.2023(UTC) Сообщений: 14 Сказал(а) «Спасибо»: 6 раз
|
Автор: nickm Проверяли неоднократно. В обычном случае C=RU,E=test@company.ru,CN=Тестовый Тест Тестович,L=Moscow,S=Moscow Region,O=COMPANY,OU=Операционная логистика, ДПиОС С экранированием OU=$depart двойными кавычками C=RU,E=test@company.ru,CN=Тестовый Тест Тестович,L=Moscow,S=Moscow Region,O=COMPANY,OU="Операционная логистика, ДПиОС"
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 31.05.2016(UTC) Сообщений: 2,225
Сказал(а) «Спасибо»: 547 раз Поблагодарили: 378 раз в 358 постах
|
Автор: AKChugunov Проверяли неоднократно. Именно сама итоговая строка команды вместе с cryptcp.exe
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 31.05.2016(UTC) Сообщений: 2,225
Сказал(а) «Спасибо»: 547 раз Поблагодарили: 378 раз в 358 постах
|
Так развернул и вывел в файл: Код:$cryptcp = 'cryptcp.exe -createrqst ' + '-dn ' + "$rdn" + " -exprt -smime -keysize 512 -certusage 1.3.6.1.5.5.7.3.4 -provtype 80 -provname " + '"Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider"' + ' "$env:temp\user.csr"'
$string = $ExecutionContext.InvokeCommand.ExpandString($cryptcp)
Write-Output $string | Out-File command.txt
В файле не увидел правильную строку: Код:cryptcp.exe -createrqst -dn "C=RU,E=email@mail.ru,CN=Николаев М.,L=,S=,O=COMPANY,OU="ОТ,ИТ"" -exprt -smime -keysize 512 -certusage 1.3.6.1.5.5.7.3.4 -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" C:\Users\nickm\AppData\Local\Temp\user.csr
Исправил формирование переменной: Код:$rdn = '"C=$country,E=$email,CN=$fio,L=$city,S=$state,O=COMPANY,OU=""'+$depart+'"""'
После в файле увидел правильную строку: Код:cryptcp.exe -createrqst -dn "C=RU,E=email@mail.ru,CN=Николаев М.,L=,S=,O=COMPANY,OU=""ОТ,ИТ""" -exprt -smime -keysize 512 -certusage 1.3.6.1.5.5.7.3.4 -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" C:\Users\nickm\AppData\Local\Temp\user.csr
Так выполнил команду: Код:cryptcp.exe -createrqst -dn $rdn -exprt -smime -keysize 512 -certusage 1.3.6.1.5.5.7.3.4 -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" "$env:temp\user.csr"
Результат: Отредактировано пользователем 9 августа 2023 г. 17:55:33(UTC)
| Причина: Поправил код
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 04.05.2023(UTC) Сообщений: 14 Сказал(а) «Спасибо»: 6 раз
|
Автор: nickm Автор: AKChugunov Проверяли неоднократно. Именно сама итоговая строка команды вместе с cryptcp.exe К сожалению немного не понимаю, что от меня требуется. Буду рад, если проконсультируете. Код:$login = $login.ToLower()
$ad = Get-ADUser -Identity $login -Properties * | select-object cn,samaccountName,EmailAddress,UserPrincipalName,department,l,company
$name = $ad.cn -replace '[(,),2,]',''
$email = $ad.EmailAddress.ToLower()
$fio = $name -replace '\s$',''
$country = 'RU'
$depart = $ad.department
$rdn = "C=$country,E=$email,CN=$fio,L=$city,S=$state,O=COMPANY,OU=$depart"
cd $PSScriptRoot
.\cryptcp.exe -createrqst -rdn $rdn -exprt -smime -keysize 512 -certusage "1.3.6.1.5.5.7.3.4" -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" $tmppath\user.csr
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close