We use the following code to load the certificate string.
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
Please try running this code in a small test app to confirm you get the same issue outside of our library.
I also suggest comparing the base-64 certificate string on the Windows and Linux systems just in case something odd is happening when you convert from the byte array to the base-64 string.
You could implement the ICertificateManager interface and you would be free to construct certificates from byte arrays etc but I think it would be better to resolve this issue as implementing ICertificateManager would be more work.
Let us know what you find.