Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline AKChugunov  
#1 Оставлено : 9 августа 2023 г. 12:53:53(UTC)
AKChugunov

Статус: Участник

Группы: Участники
Зарегистрирован: 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

Offline Александр Лавник  
#2 Оставлено : 9 августа 2023 г. 13:04:05(UTC)
Александр Лавник

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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=...).
Техническую поддержку оказываем тут
Наша база знаний
thanks 2 пользователей поблагодарили Александр Лавник за этот пост.
nickm оставлено 09.08.2023(UTC), AKChugunov оставлено 09.08.2023(UTC)
Offline AKChugunov  
#3 Оставлено : 9 августа 2023 г. 13:57:52(UTC)
AKChugunov

Статус: Участник

Группы: Участники
Зарегистрирован: 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]
Offline Александр Лавник  
#4 Оставлено : 9 августа 2023 г. 14:10:18(UTC)
Александр Лавник

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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 - ошибка воспроизводится?
Техническую поддержку оказываем тут
Наша база знаний
Online nickm  
#5 Оставлено : 9 августа 2023 г. 14:21:13(UTC)
nickm

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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]

Разверните все переменные в командной строке и посмотрите, что у Вас представляет из себя итоговая строка.
Offline AKChugunov  
#6 Оставлено : 9 августа 2023 г. 14:53:39(UTC)
AKChugunov

Статус: Участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline AKChugunov  
#7 Оставлено : 9 августа 2023 г. 14:59:10(UTC)
AKChugunov

Статус: Участник

Группы: Участники
Зарегистрирован: 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="Операционная логистика, ДПиОС"



Online nickm  
#8 Оставлено : 9 августа 2023 г. 15:08:20(UTC)
nickm

Статус: Активный участник

Группы: Участники
Зарегистрирован: 31.05.2016(UTC)
Сообщений: 2,225

Сказал(а) «Спасибо»: 547 раз
Поблагодарили: 378 раз в 358 постах
Автор: AKChugunov Перейти к цитате
Проверяли неоднократно.

Именно сама итоговая строка команды вместе с cryptcp.exe

Online nickm  
#9 Оставлено : 9 августа 2023 г. 15:55:24(UTC)
nickm

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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"


Результат:
UserPostedImage

Отредактировано пользователем 9 августа 2023 г. 17:55:33(UTC)  | Причина: Поправил код

Offline AKChugunov  
#10 Оставлено : 9 августа 2023 г. 16:10:27(UTC)
AKChugunov

Статус: Участник

Группы: Участники
Зарегистрирован: 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
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (4)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.