我正在实现 SCEP 服务器来分发客户端证书。根据protocol , 对于来自设备的 GetCACert
请求,响应 header 的内容类型应为 application/x-x509-ca-cert
。
我的问题是,默认情况下,每个响应的字符编码都被我的应用程序的过滤器设置为 UTF-8
,因此响应变为 application/x-x509-ca-cert ;charset=UTF-8
。设备不喜欢这个字符编码部分并拒绝响应。
我怀疑设备可能会尝试将响应从 UTF-8 格式转换,因此我尝试将响应编码为 UTF-8,但设备仍然不接受我的响应。
然后,我将 burp 代理设置为设备,并从响应 header 中删除了 charset=UTF-8
部分,并且设备接受了响应。
经过一些谷歌搜索,我发现证书是用DER
编码的,但是当我将DER
作为字符编码时,java说unknown-encoding
以及 IANA字符编码在其官方字符集中没有 DER
。
我的问题是“可用于定义 x509 证书的字符编码的官方字符集名称是什么?”。
最佳答案
证书是二进制的。它们没有字符编码,因为它们不是字符而是普通的八位位组(字节)。如果您尝试使用某种字符编码对这些非字符进行编码,这将无济于事。相反,您需要省略 charset 属性。
关于certificate - x509 证书的字符编码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63824786/