1

我正在实现一个 SCEP 服务器来分发客户端证书。根据协议,对于GetCACert来自设备的请求,响应头的 content-type 应该是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,而且IANA字符编码在他们的官方字符集中也没有DER

我的问题是“可用于定义 x509 证书字符编码的官方字符集名称是什么?”。

4

1 回答 1

3

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

于 2020-09-10T08:14:16.157 回答