Отказ от ответственности: Я твердо верю, что вы не должны использовать собственную систему шифрования / CA и использовать стандартное программное обеспечение CA для выдачи сертификатов, поскольку они предназначены для решения этой проблемы.
В .NET нет встроенной поддержки кодирования / декодирования ASN (включая .NET Core), вам необходимо использовать сторонние библиотеки.
Для кодирования ASN вы можете использовать разработанную мной библиотеку ASN.1: Asn1DerParser.NET
И использование для вашего конкретного случая будет:
Byte[] encodedData = new Asn1Builder()
.AddSequence(x => x.AddObjectIdentifier(new Oid("1.3.6.1.5.5.7.48.1")
.AddImplicit(6, Encoding.ASCII.GetBytes("http://ocsp.example.com"), true))
.GetEncoded();
var extension = new X509Extension("1.3.6.1.5.5.7.1.1", encodedData, false);
и добавьте элемент extension
к вашему запросу. Если вам нужно добавить больше URL, добавьте больше элементов SEQUENCE:
Byte[] encodedData = new Asn1Builder()
.AddSequence(x => x.AddObjectIdentifier(new Oid("1.3.6.1.5.5.7.48.1")
.AddImplicit(6, Encoding.ASCII.GetBytes("http://ocsp1.example.com"), true))
.AddSequence(x => x.AddObjectIdentifier(new Oid("1.3.6.1.5.5.7.48.1")
.AddImplicit(6, Encoding.ASCII.GetBytes("http://ocsp2.example.com"), true))
.GetEncoded();
var extension = new X509Extension("1.3.6.1.5.5.7.1.1", encodedData, false);