我正在实现一个SCEP服务器来分发客户端证书。根据协议,对于来自设备的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
,而且IANA字符编码的官方字符集中没有DER
。
我的问题是";可以用来定义x509证书的字符编码的官方字符集名称是什么&";。
证书是二进制的。它们没有字符编码,因为它们不是字符,而是普通的八位字节(字节(。如果您尝试使用某些字符编码来对这些非字符进行编码,这将没有帮助。相反,您需要省略charset属性。