Server Management - Remote Server Management
1752796 Members
5706 Online
108789 Solutions
New Discussion

iLO certificate generation bug after upgrade

 
Stefan Winter
Occasional Contributor

iLO certificate generation bug after upgrade

Hello,

there seems to be a bug in the way iLO (all firmware versions up to 1.82) generates its certificates for HTTPS connections. This annoying when a firmware upgrade is attempted in conjunction with Firefox, since Firefox thoroughly validates the server certificate and finds a subtle error.
The problem is:
when upgrading iLO Firmware, the contents of the server certificate are kept, including date of issue and _serial number_, but the the certificate gets signed with a different key and thus has other MD5 and SHA1 signatures.
Because of that, two valid certificates (from the same CA, since they are self-signed certificates) exist that have the same serial number, which violates RFC RFC 2459 and its successor RFC 3280.

Since Firefox knows the "old" certificate because that was the one used to trigger the firmware upgrade and gets presented the "new" one after the iLO reload is complete, the violation is detected and Firefox refuses to establish an SSL connection. This behaviour from Firefox is standards-complaint and okay, it is the iLO Firemware that MUST issue a new serial number to the new certificate.

I have attached a tar with two certificates for the same server that carry the same serial. And, for reference, here are the relevant sections of the RFCs:

2459
(http://www.rfc-editor.org/cgi-bin/rfcdoctype.pl?loc=RFC&letsgo=2459&type=ftp&file_format=txt):
4.1.2.2  Serial number

   The serial number is an integer assigned by the CA to each certificate.  It MUST be unique for each certificate issued by a given CA (i.e., the issuer name and serial number identify a unique certificate).


3280
(http://www.rfc-editor.org/cgi-bin/rfcdoctype.pl?loc=RFC&letsgo=3280&type=ftp&file_format=txt):
4.1.2.2  Serial number

   The serial number MUST be a positive integer assigned by the CA to each certificate.  It MUST be unique for each certificate issued by a given CA (i.e., the issuer name and serial number identify a unique certificate).  CAs MUST force the serialNumber to be a non-negative integer.

   Given the uniqueness requirements above, serial numbers can be expected to contain long integers.  Certificate users MUST be able to handle serialNumber values up to 20 octets. Conformant CAs MUST NOT use serialNumber values longer than 20 octets.

   Note: Non-conforming CAs may issue certificates with serial numbers that are negative, or zero.  Certificate users SHOULD be prepared to gracefully handle such certificates.

The only way to workaround this iLO bug is to empty the certificate store of all iLO certificates and to only accept the presented certs of the old iLO revisions for the session only _and_ to restart Firefox after the firmware upgrade is complete to start a new session. This is very cumbersome when upgrading large installations.
I'd recommend to implement certificate handling within iLO in a standards-compliant way.

Greetings,

Stefan Winter