Сертификат Golang x509 имеет значения OID AS PRINTABLESTRING вместо UTF8STRING.

Go версия go1.18.4, darwin/arm64

Я создаю сертификат x509.

Когда я анализирую сгенерированный сертификат pem, используя

asn1parse -in

Я вижу общее имя как PRINTABLESTRING вместо UTF8STRING.

31:d=4 hl=2 l= 13 cons: SEQUENCE
33:d=5 hl=2 l= 3 prim: OBJECT :commonName
38:d=5 hl=2 l= 6 prim: PRINTABLESTRING :golang

Насколько я понимаю, в golang строка по умолчанию utf8, но сертификат все равно показывает ее как PRINTABLESTRING

Код доступен по ссылке GO play

Также, когда я помещаю некоторые символы, такие как é um, я вижу это как UTF8STRING.

Есть ли способ поместить значения OID как UTF8STRING вместо PRINTABLESTRING?

Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
1
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пакет Go asn1 будет использовать UTF8STRING только в том случае, если строка требует этого. В этом нет ничего плохого по своей сути, и кажется, что позволить библиотеке сделать этот выбор нормально.

Тем не менее, если вы действительно хотите использовать UTF8STRING, вы можете использовать asn1.RawValue для достижения этой цели:

name, err := asn1.MarshalWithParams("golang", "utf8")
if err != nil {
    // handle error
}

pkixAttrTypeValue := []pkix.AttributeTypeAndValue{
    {
        Type:  COMMON_NAME,
        Value: asn1.RawValue{FullBytes: name},
    },
}

Другие вопросы по теме