В общем, все корневые сертификаты центров сертификации, которые продают сертификаты для пользователей - являются самоподписанными. 
Просто пользователи настолько тупые, что не могу самостоятельно установить себе сертификат для обмена информацией, вот их и продают... 


В статье используются программы:
AkelPad v4.9.8 Текстовый редактор оф. сайтПолезные ссылки:
QIP Shot v3.4.3 Программа для создания скриншотов оф. сайт
Win64 OpenSSL v1.1.1g Light Open SSL оф. сайт
Имена X.509 распространённые.
Введение в криптографию и сертификаты.
Адекватный мануал по командлету "New-SelfSignedCertificate".
0. Скачиваем, устанавливаем "OpenSSL light".
1. Создание корневого сертификата и закрытого ключа.
2. Экспорт контейнера PFX с закрытым ключом.
3. Экспорт корневого сертификата.
4. Добавление корневого сертификата в доверенные сертификаты.
5. Создание сертификата и закрытого ключа для нашего WEB сервера.
6. Экспорт сертификата и закрытого ключа для веб сервиса (или любого другого сервиса).
К сожалению, в Microsoft, всё ещё недостаточно ебут программистов (и тех кто пишет документацию у них на сайте), ииии потому нам недостаточно будет только PowerShell, щука.
Мы сможем создать секретный ключ и сертификат для подписания наших сертификатов, НО! извлекать секретный ключ мы сможем только с помощью сторонней программы "OpenSSL". В теорию ключей и шифрования мы погружаться не будем, там пиздец, чёрт голову сломит.
1. Для начала сделаем пару ключей для подписи. Мы не будем указывать все возможные параметры. Для собственных SOHO потребностей это не нужно. Всё, что начинается со слова "Key", относится к "закрытому" ключу. Ключ будет 4096 бит длинной, и сроком действия 10 лет с момента выпуска (выполнения команды в консоли).
Параметр "-Subject" задаётся в формате "relative distinguished names" и по идее он задаёт значение кому был выдан сертификат. Человеку, адресу сервера, имени сервера. "CertStoreLocation" - путь в консоли (certmgr.msc) сертификатов куда он будет добавлен.
Самое важное - Для того, чтобы сертификат считался корневым сертификатом центра сертификации нужно ещё дописать вот это:
-TextExtension @("2.5.29.19 ={critical} {text}ca=1&pathlength=3")Сертификат вместе с ключом будет расположен в "Личное -> Сертификаты" (текущего пользователя):

Всё можно делать без прав локального администратора!
Открываем консоль "PowerShell" и вставляем:
New-SelfSignedCertificate `
-FriendlyName "Friendly Name Certificate" `
-Type Custom `
-KeySpec Signature `
-Subject "CN=Subject,C=RU,L=Moscow,[email protected]" `
-KeyExportPolicy Exportable `
-HashAlgorithm sha256 `
-KeyLength 4096 `
-CertStoreLocation "Cert:\CurrentUser\My" `
-KeyUsage CertSign `
-KeyUsageProperty All `
-NotAfter (get-date).addyears(10) `
-TextExtension @("2.5.29.19 ={critical} {text}ca=1&pathlength=3")

Доверия к вашему корневому сертификату нет даже у вас


Если присмотреться то на значке сертификата есть ключик :) Это значит, что у нас есть не только сертификат но и закрытый ключ. Который лежит там же... там... жжжже...

Значение "Thumbprint (отпечаток)" используется для действий с сертификатом. При подписи этим сертификатом будет браться именно значение "Thumbprint".
2. Давайте экспортируем наш сертификат и закрытый ключ для резервного копирования и распространения сертификата, у нас всё равно открыта оснастка "certmgr.msc".
Нажимаем правую кнопку мыши и выбираем "Экспорт":

Далее:

Да, экспортировать закрытый ключ:

Оставляем всё как есть:

Ставим галочку на "Пароль", без этого не получится.
Microsoft нормально воспринимает оба типа шифрования. Если нужно будет импортировать на Android то нужно выбирать кодировку "TripleDES-SHA1"! Но я бы на вашем месте сделал два экспорта в обоих кодировках. Этот экспорт мы делаем чтобы всё не проебать.



Готово:

3. Теперь снова экспортируем, но только сертификат.
На втором шаге не выбираем "Закрытый ключ":


Кодировка для добавления на Android (Apache) нужна "BASE-64".
Расширения файла получается ".cer", для упоротых систем можно смело его сменить переименовыванием на ".crt"




Теперь у нас есть корневой Сертификат, и мы можем его раздавать всем, чтобы они доверяли нашим будущим сертификатам.
И есть архив ".PFX" для сохранения на случай поломки.
Класс
