Если вы хотите автоматически, вы можете использовать
var enumValues = Enum.GetValues(typeof(CertificateTypes)).Cast<CertificateTypes>().Select(e => (byte)e);
var selectList = new SelectList(enumValues);
Проблема здесь в том, что вы собираетесь получать только байты, поэтому вам, вероятно, потребуется выбрать новый тип, например ...
var enumValues = Enum.GetValues(typeof(CertificateTypes)).Cast<CertificateTypes>()
.Select(e => new KeyValuePair<byte, string>((byte)e, e.ToString()));
var selectList = new SelectList(enumValues, "Key", "Value");
Это просто взяло бы возможные значения из перечисления и преобразовало бы его в IEnumerable CertificateTypes, а затем приняло бы каждое значение и преобразовало его в новый KeyValuePair.
Стоит отметить, что, как правило, рекомендуется делать множественные числа перечисленными, только если на них есть атрибут [Flags]. В противном случае я бы назвал это единственное число.
Должен любить LINQ!