Fix X.509 certificate creation with blank email addresses

What does this MR do and why?

Sentry error: https://new-sentry.gitlab.net/organizations/gitlab/issues/1832009

ActiveRecord::RecordInvalid: Validation failed: Email can't be blank, Email is invalid (ActiveRecord::RecordInvalid)
  from active_record/validations.rb:84:in `raise_validation_error'
  from active_model/validations.rb:412:in `validate!'
  from app/models/application_record.rb:71:in `block in safe_find_or_create_by!'
  from <internal:kernel>:90:in `tap'
  from app/models/application_record.rb:68:in `safe_find_or_create_by!'
  from active_record/relation/delegation.rb:122:in `public_send'
  from active_record/relation/delegation.rb:122:in `block in method_missing'
  from active_record/relation.rb:939:in `_scoping'
  from active_record/relation.rb:467:in `scoping'
  from active_record/relation/delegation.rb:122:in `method_missing'
  from app/models/x509_certificate.rb:33:in `safe_create!'
  from lib/gitlab/x509/signature.rb:27:in `x509_certificate'
  from lib/gitlab/x509/commit.rb:20:in `attributes'

Problem

X.509 signature verification fails with ActiveRecord::RecordInvalid when certificates contain blank email addresses in subjectAltName.

Solution

Add email validation to return nil when certificate_email is blank.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Vasilii Iakliushin

Merge request reports

Loading