Makecert: расширение основных ограничений сертификата не наблюдалось

Я пытаюсь создать самозаверяющий сертификат с помощью makecert Вот что я делаю:

makecert -n "CN=TuyenTk CA, C=VN, ST=Hanoi, L=Hoan Kiem" -cy authority
-h 1 -a sha1 -sv "D:\TuyenTk CA.pvk" -r "D:\TuyenTk CA.cer"


makecert -n "CN=TuyenTk" -ic "D:\TuyenTk CA.cer" -iv "D:\TuyenTk CA.pvk" 
-eku "1.3.6.1.5.5.7.3.3" -cy end -a sha1 -h 0 -sky exchange -pe "D:\TuyenTk.cer"


pvk2pfx -pvk "D:\TuyenTk CA.pvk" -spc "D:\TuyenTk CA.cer" 
-pfx "D:\TuyenTk.pfx" -pi "myPassWord"

Первая строка — создание собственного сертификата (сертификат ЦС), вторая — использование сертификата ЦС для подписания другого сертификата, а последняя — создание файла pfx для подписи исполняемого файла.

Хотя все вышеперечисленные 3 команды сообщаются об успешном выполнении, когда я дважды щелкаю TuyenTk CA.cer и TuyenTk.cer, в окнах вкладки «Сведения» сообщается, что основные ограничения являются критическими. Поэтому, когда я использую файл TuyenTk.pfx для подписи моего exe-файла, на вкладке «Цифровые подписи» сертификат недействителен: расширение базовых ограничений сертификата не наблюдается

Я просматриваю сведения о сертификате перед его установкой, и после установки в доверенном корневом каталоге или в личном расположении хранилища сертификатов я все еще вижу ошибку.

Как я могу решить эту проблему? Благодарить!


person Tuyen Pham    schedule 23.06.2015    source источник
comment
Я думаю, что по теме здесь, но если вы не получите ответа, вы можете попробовать сайты безопасности или криптографии.   -  person Harry Johnston    schedule 24.06.2015


Ответы (1)


Чтобы создать самозаверяющий сертификат корневого ЦС, попробуйте следующие варианты:

    makecert -r -pe -m 1200 -len 2048 -n "CN=TuyenTk CA, C=VN, ST=Hanoi, L=Hoan Kiem" -ss CA -sr CurrentUser -a sha1 -sky signature -cy authority -sv "D:\TuyenTk_CA.pvk" "D:\TuyenTk_CA.cer"

Я оставил "-h 1", чтобы дать вам неограниченную глубину подписи в основных ограничениях; некоторым пакетам SSL не нравится неограниченная длина пути, поэтому вы можете либо иметь слои ключей, или вставить "-h 5" или любое другое значение, которое, по вашему мнению, удовлетворит ваши потребности. Переключатели, которые я добавил:

    -pe              Make private key exportable
    -m 1200          Make CA key valid for 100 years (1200 months)
    -ss CA           This key goes into the CA certificate store
    -sr CurrentUser  Certificate store location
    -sky signature   Key type (use for signing)

Я также добавил подчеркивание (вместо пробела) в имени; может и не нужно, но в моих файлах сертификатов нет пробелов (иногда эти утилиты могут быть странными).

При импорте сертификата ЦС убедитесь, что вы делаете это в физическом хранилище «Доверенные корневые центры сертификации\Локальный компьютер». Например, используйте это из командной строки администратора:

    certutil -addstore -v root "D:\TuyenTk_CA.cer"

Эти шаги сработали для меня на XP и работают сегодня на Windows 7. Надеюсь, это поможет!

  • драк
person Drac    schedule 28.06.2015
comment
Все еще есть ошибка. Не знаю почему. Я использую Windows 8.1 Pro 32 бит - person Tuyen Pham; 01.07.2015
comment
Можете ли вы опубликовать шаги, которые вы предприняли, и результаты на каждом этапе? Например, был ли создан сертификат CA? Удалось ли вам установить его в хранилище «Доверенные корневые центры сертификации\Локальный компьютер»? Какие параметры вы использовали для создания сертификата ЦС? Какие варианты/шаги вы предприняли, чтобы создать и подписать сертификат подписи кода? Как насчет подписи кода (использовали ли вы SignTool? Какие варианты...?). - person Drac; 02.07.2015
comment
Да, он успешно создан, и я могу установить его в Trusted Root\Local Computer. Я копирую вашу команду, затем вставляю в командную строку, но удаляю -ss и sr. Потом устанавливаю вручную. Я вижу это в магазине сертификатов. Все хорошо, кроме basic constraints. Я могу использовать сертификат ЦС для подписи другого сертификата, но любой сертификат, подписанный этим сертификатом ЦС, также является basic constraints предупреждением - person Tuyen Pham; 04.07.2015