Difference between "Signature Algorithm" and "Signature Hash Algorithm" in X.509 What's the difference between the "Signature Algorithm" and the "Signature Hash Algorithm" found in an X.509 certificate? Why does it need a "Signature Hash Algorithm"?



Edit:

I'm creating the X.509 cert with PHP 5.2. When I change the 'digest_alg' to 'md5', both properties of the Microsoft Cert Tool changes to md5. So, as mentioned in one answer below, it seems to be an issue/invention of the Microsoft Cert Tool.

Change to md5:

           $configs = array(
                            'config'             =&gt; 'test.cnf',
                            'digest_alg'         =&gt; 'md5',
                            'x509_extensions'    =&gt; 'v3_ca',
                            'req_extensions'     =&gt; 'v3_req',
                            'private_key_bits'   =&gt; 2048,
                            'private_key_type'   =&gt; OPENSSL_KEYTYPE_RSA,
                            'encrypt_key'        =&gt;
                        );


Result:
This has more to do with how Microsoft decided to implemented their certificate inspection GUI, than about the actual fields of the certificate. Most signature algorithm identifiers present in contemporary certificates specify both the public key algorithm (RSA in this case) and the digest algorithm (SHA-1 in this case). The identifier &quot;sha1RSA&quot; is most likely inaccurate in so far that Microsoft has decided to use it for an identifier that is known as sha1WithRSAEncryption OBJECT IDENTIFIER ::= {  iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 5 } in the standard.
The only semi-common standard signature algorithm I am aware of that actually separates the public key algorithm identifier from the digest algorithm identifier in the signature algorithm identifier of certificates, is PKCS#1 v2 RSASSA-PSS.
Edit:
Consequently, Microsoft follows conventions and the X.509 specification by letting &quot;signature algorithm&quot; mean a combination of a signature public key algorithm and signature hash algorithm, but, firstly, the identifiers they use for these combinations are non standard, and, secondly, adding a signature hash algorithm field is in most cases superfluous and doesn't usually reflect the actual X.509 format.