':return:
A list of unicode strings of valid domain names for the certificate.
Wildcard certificates will have a domain in the form: *.example.com'

@property
def valid_domains(self):

    if (self._valid_domains is None):
        self._valid_domains = []
        if self.subject_alt_name_value:
            for general_name in self.subject_alt_name_value:
                if ((general_name.name == u'dns_name') and (general_name.native not in self._valid_domains)):
                    self._valid_domains.append(general_name.native)
        else:
            pattern = re.compile(u'^(\\*\\.)?(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-]*[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$')
            for rdn in self.subject.chosen:
                for name_type_value in rdn:
                    if (name_type_value[u'type'].native == u'common_name'):
                        value = name_type_value[u'value'].native
                        if pattern.match(value):
                            self._valid_domains.append(value)
    return self._valid_domains
