我有从其他service.On的Java Web服务x509证书接收x509证书Java Web服务是序列化到字节数组使用此代码snipppetx509证书为byte []在Java和回X509证书在C#
for (X509Certificate certificate : certs) {
try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
try (ObjectOutput out = new ObjectOutputStream(bos)) {
out.writeObject(certificate);
wrapper = new CustomMapCertificateWrapper();
wrapper.setCustomValue(bos.toByteArray());
response.getCustomMapCertificateWrapper().add(wrapper);
}
}
这里的CustomMapCertificateWrapper是byte []值为field的类,它将x509certificate存储为字节数组。我的.NET服务接收这个对象CustomMapCertificateWrapper我尝试生成的C#侧x509证书使用此代码段
//Do array reverse because of BigEndian difference between Java and c# languages
Array.Reverse(customMapCertificateWrapper.value);
var certificate = new X509Certificate(customMapCertificateWrapper.value);
此代码抛出我expcetion像下面
System.Security.Cryptography.CryptographicException: Cannot find the requested object.
at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
at System.Security.Cryptography.X509Certificates.X509Utils._QueryCertBlobType(Byte[] rawData)
at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData)
你是否尝试禁用endianess(不反转字节)? – Crypt32
@ Crypt32我试过了,不起作用( – Huseyn