I can't respond to comments so...
This question is language-agnostic. When people say 'ssl certificate'
or just 'certificate' they are usually referring to an x509
Very well. In that case, then, let me clear up a few misconceptions you seem to have.
From your original post:
I've found that given a certificate in any format (say DER), you can
convert it back to its original text form which DOES contain the
The output of openssl asn1parse isn't the "original text" by any means. It's just a human readable version of the DER (which itself is a base64 decoded PEM).
An X.509 certificate must contain the "signers signature". If it didn't it wouldn't be an X.509 certificate. Whether or not .NET's X509Certificate class outputs the "signers signature" is another matter. And in lieu of knowing what it does output I can't really comment on that.
What is odd is that the signature property seems to be missing in a
lot of instances (.NET's X509Certificate class and when viewing a
certificate in Windows).
To recap... the "signature property" is always present. The human readable version of the X.509 certificate .NET's X509Certificate class gives you may not include it but that does not mean the DER doesn't have it. It does.