バイト配列からX509Certificate2インスタンスを作成すると、Windowsでは動作しますが、Linuxでは "CryptographicException"が失敗します。 WindowsではX509Certificate2はLinuxでは解析できませんが、Windowsでは動作しません
static void Main(string[] args)
{
var cert = new X509Certificate2(Cert.CertBytes);
}
:有効なX509Certificate2インスタンスは、Linuxでは が作成されます。例外がスローされます。
{System.Security.Cryptography.CryptographicException: Cannot find the original signer. at Internal.Cryptography.Pal.PkcsFormatReader.TryReadPkcs7(SafePkcs7Handle pkcs7, Boolean single, ICertificatePal& certPal, List`1& certPals) at Internal.Cryptography.Pal.PkcsFormatReader.TryReadPkcs7Der(Byte[] rawData, Boolean single, ICertificatePal& certPal, List`1& certPals) at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] data) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData) at CertTest.Program.Main(String[] args) in /home/CertTest/Program.cs:line 14}
私が何か間違ったことをやっていますか?証明書は、それが解析されたOSにかかわらず、証明書であると仮定します。
現在のLinux、Windows上ではなく、解析することができ、有効なX509証明書を見つける:https://gist.github.com/secana/9c13f8fa495681f8a30adb5d8754450e
を私は複数の証明書を試してみましたが、どれもLinux上で働きました。私はMacを持っていないので、そこで動作するかどうかはテストできませんでした。 Ubuntuの16.04は、Ubuntu 17.10、openSUSEのタンブルウィード、Windowsの10
問題のリンク:https://github.com/dotnet/corefx/issues/25828 – secana