Для создания самозаверяющего сертификата следует использовать CertCreateSelfSignCertificate неуправляемый API. Чтобы иметь возможность выбрать длину ключа, вы должны использовать недокументированную часть параметров dwFlags
(см. здесь ).
Я не знаю простого способа создания PKI с сертификатами, созданными вручную, как вы можете сделать это с помощью MakeCert.exe (см. Мой старый ответ ). Несколько лет назад я написал соответствующий неуправляемый код на C ++, но этот код относительно длинный. Код состоит в основном из создания всех элементов сертификата вручную и использования CryptSignAndEncodeCertificate в конце для подписания сертификата с закрытым ключом другого сертификата. Примеры кода this и this , вероятно, могут вам помочь.