Конфигурация CFSSL против OpenSSL - PullRequest
0 голосов
/ 02 июля 2018

Кто-нибудь знает, все ли поля, которые вы можете указать в конфигурационном файле OpenSSL, доступны в инструментарии центра сертификации Cloudflare CFSSL? Существуют определенные поля (например, default_md или указание, что страны должны совпадать), которые, по-видимому, отсутствуют в опциях, которые CFSSL распознает в своих файлах конфигурации JSON (из которых ниже приводится выдержка):

type CAConstraint struct {
    IsCA           bool `json:"is_ca"`
    MaxPathLen     int  `json:"max_path_len"`
    MaxPathLenZero bool `json:"max_path_len_zero"`
}

// A SigningProfile stores information that the CA needs to store
// signature policy.
type SigningProfile struct {
    Usage               []string     `json:"usages"`
    IssuerURL           []string     `json:"issuer_urls"`
    OCSP                string       `json:"ocsp_url"`
    CRL                 string       `json:"crl_url"`
    CAConstraint        CAConstraint `json:"ca_constraint"`
    OCSPNoCheck         bool         `json:"ocsp_no_check"`
    ExpiryString        string       `json:"expiry"`
    BackdateString      string       `json:"backdate"`
    AuthKeyName         string       `json:"auth_key"`
    RemoteName          string       `json:"remote"`
    NotBefore           time.Time    `json:"not_before"`
    NotAfter            time.Time    `json:"not_after"`
    NameWhitelistString string       `json:"name_whitelist"`
    AuthRemote          AuthRemote   `json:"auth_remote"`
    CTLogServers        []string     `json:"ct_log_servers"`
    AllowedExtensions   []OID        `json:"allowed_extensions"`
    CertStore           string       `json:"cert_store"`

    Policies                    []CertificatePolicy
    Expiry                      time.Duration
    Backdate                    time.Duration
    Provider                    auth.Provider
    RemoteProvider              auth.Provider
    RemoteServer                string
    RemoteCAs                   *x509.CertPool
    ClientCert                  *tls.Certificate
    CSRWhitelist                *CSRWhitelist
    NameWhitelist               *regexp.Regexp
    ExtensionWhitelist          map[string]bool
    ClientProvidesSerialNumbers bool
}

Абстрагирует ли CFSSL многие параметры конфигурации OpenSSL или я просто не вижу, где их можно указать?

1 Ответ

0 голосов
/ 13 июля 2018

Кажется, что алгоритм дайджеста сообщений выбирается динамически и зависит от длины закрытого ключа CA.

func DefaultSigAlgo(priv crypto.Signer) x509.SignatureAlgorithm {
    pub := priv.Public()
    switch pub := pub.(type) {
    case *rsa.PublicKey:
        keySize := pub.N.BitLen()
        switch {
        case keySize >= 4096:
            return x509.SHA512WithRSA
        case keySize >= 3072:
            return x509.SHA384WithRSA
        case keySize >= 2048:
            return x509.SHA256WithRSA
        default:
            return x509.SHA1WithRSA
        } ...

На основании того, что я нашел в источнике CFSSL на Github .

Что касается округов, я не смог найти никаких ограничений в коде, который ограничивает или настраивает его, мог предположить, что разрешены все страны.

...