x509证书的字符编码是什么?

问题描述

我正在实现scep服务器以分发客户端证书。根据{{​​3}},对于来自设备的GetCACert请求,响应标头的内容类型应为application/x-x509-ca-cert

我的问题是,认情况下,应用程序的过滤器将每个响应的字符编码设置为UTF-8,因此响应变成application/x-x509-ca-cert;charset=UTF-8。该设备不喜欢此字符编码部分,因此拒绝响应。

我怀疑设备可能尝试将响应转换为UTF-8格式,因此我尝试将响应编码为UTF-8,但是设备仍然不接受我的响应。

然后我将burp代理设置为设备,并从响应标头中删除charset=UTF-8部分,并且设备接受了响应。

在一些谷歌搜索中,我发现证书使用DER进行编码,但是当我将DER用作字符编码时,java会说unkNown-encoding以及protocol字符编码在其官方字符集中没有DER

我的问题是“可以用来定义x509证书的字符编码的正式字符集名称是什么?”。

解决方法

证书是二进制的。它们没有字符编码,因为它们不是字符而是纯八位字节(字节)。如果尝试使用某些字符编码对这些非字符进行编码,将无济于事。相反,您需要省略charset属性。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...