登录
首页 >  Golang >  Go问答

Golang中x509证书的OID值应为PRINTABLESTRING而非UTF8STRING

来源:stackoverflow

时间:2024-03-08 16:45:26 135浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《Golang中x509证书的OID值应为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 url 获取

此外, 当我输入像 é um 这样的字符时,我可以将其视为 utf8string。

有没有办法将 oid 值设置为 utf8string 而不是 printablestring?


正确答案


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},
    },
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>