fix per-host scope
This commit is contained in:
2
vendor/github.com/cloudflare/cfssl/config/config.go
generated
vendored
2
vendor/github.com/cloudflare/cfssl/config/config.go
generated
vendored
@ -32,7 +32,7 @@ import (
|
||||
// mechanism.
|
||||
type CSRWhitelist struct {
|
||||
Subject, PublicKeyAlgorithm, PublicKey, SignatureAlgorithm bool
|
||||
DNSNames, IPAddresses, EmailAddresses bool
|
||||
DNSNames, IPAddresses, EmailAddresses, URIs bool
|
||||
}
|
||||
|
||||
// OID is our own version of asn1's ObjectIdentifier, so we can define a custom
|
||||
|
6
vendor/github.com/cloudflare/cfssl/csr/csr.go
generated
vendored
6
vendor/github.com/cloudflare/cfssl/csr/csr.go
generated
vendored
@ -14,6 +14,7 @@ import (
|
||||
"errors"
|
||||
"net"
|
||||
"net/mail"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
cferr "github.com/cloudflare/cfssl/errors"
|
||||
@ -268,6 +269,9 @@ func getHosts(cert *x509.Certificate) []string {
|
||||
for _, email := range cert.EmailAddresses {
|
||||
hosts = append(hosts, email)
|
||||
}
|
||||
for _, uri := range cert.URIs {
|
||||
hosts = append(hosts, uri.String())
|
||||
}
|
||||
|
||||
return hosts
|
||||
}
|
||||
@ -379,6 +383,8 @@ func Generate(priv crypto.Signer, req *CertificateRequest) (csr []byte, err erro
|
||||
tpl.IPAddresses = append(tpl.IPAddresses, ip)
|
||||
} else if email, err := mail.ParseAddress(req.Hosts[i]); err == nil && email != nil {
|
||||
tpl.EmailAddresses = append(tpl.EmailAddresses, email.Address)
|
||||
} else if uri, err := url.ParseRequestURI(req.Hosts[i]); err == nil && uri != nil {
|
||||
tpl.URIs = append(tpl.URIs, uri)
|
||||
} else {
|
||||
tpl.DNSNames = append(tpl.DNSNames, req.Hosts[i])
|
||||
}
|
||||
|
37
vendor/github.com/cloudflare/cfssl/signer/local/local.go
generated
vendored
37
vendor/github.com/cloudflare/cfssl/signer/local/local.go
generated
vendored
@ -16,6 +16,7 @@ import (
|
||||
"net"
|
||||
"net/http"
|
||||
"net/mail"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/cloudflare/cfssl/certdb"
|
||||
@ -105,6 +106,7 @@ func (s *Signer) sign(template *x509.Certificate) (cert []byte, err error) {
|
||||
}
|
||||
template.DNSNames = nil
|
||||
template.EmailAddresses = nil
|
||||
template.URIs = nil
|
||||
s.ca = template
|
||||
initRoot = true
|
||||
}
|
||||
@ -159,13 +161,14 @@ func PopulateSubjectFromCSR(s *signer.Subject, req pkix.Name) pkix.Name {
|
||||
return name
|
||||
}
|
||||
|
||||
// OverrideHosts fills template's IPAddresses, EmailAddresses, and DNSNames with the
|
||||
// OverrideHosts fills template's IPAddresses, EmailAddresses, DNSNames, and URIs with the
|
||||
// content of hosts, if it is not nil.
|
||||
func OverrideHosts(template *x509.Certificate, hosts []string) {
|
||||
if hosts != nil {
|
||||
template.IPAddresses = []net.IP{}
|
||||
template.EmailAddresses = []string{}
|
||||
template.DNSNames = []string{}
|
||||
template.URIs = []*url.URL{}
|
||||
}
|
||||
|
||||
for i := range hosts {
|
||||
@ -173,6 +176,8 @@ func OverrideHosts(template *x509.Certificate, hosts []string) {
|
||||
template.IPAddresses = append(template.IPAddresses, ip)
|
||||
} else if email, err := mail.ParseAddress(hosts[i]); err == nil && email != nil {
|
||||
template.EmailAddresses = append(template.EmailAddresses, email.Address)
|
||||
} else if uri, err := url.ParseRequestURI(hosts[i]); err == nil && uri != nil {
|
||||
template.URIs = append(template.URIs, uri)
|
||||
} else {
|
||||
template.DNSNames = append(template.DNSNames, hosts[i])
|
||||
}
|
||||
@ -232,6 +237,9 @@ func (s *Signer) Sign(req signer.SignRequest) (cert []byte, err error) {
|
||||
if profile.CSRWhitelist.EmailAddresses {
|
||||
safeTemplate.EmailAddresses = csrTemplate.EmailAddresses
|
||||
}
|
||||
if profile.CSRWhitelist.URIs {
|
||||
safeTemplate.URIs = csrTemplate.URIs
|
||||
}
|
||||
}
|
||||
|
||||
if req.CRLOverride != "" {
|
||||
@ -277,6 +285,11 @@ func (s *Signer) Sign(req signer.SignRequest) (cert []byte, err error) {
|
||||
return nil, cferr.New(cferr.PolicyError, cferr.UnmatchedWhitelist)
|
||||
}
|
||||
}
|
||||
for _, name := range safeTemplate.URIs {
|
||||
if profile.NameWhitelist.Find([]byte(name.String())) == nil {
|
||||
return nil, cferr.New(cferr.PolicyError, cferr.UnmatchedWhitelist)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if profile.ClientProvidesSerialNumbers {
|
||||
@ -467,17 +480,17 @@ func (s *Signer) SignFromPrecert(precert *x509.Certificate, scts []ct.SignedCert
|
||||
// Create the new tbsCert from precert. Do explicit copies of any slices so that we don't
|
||||
// use memory that may be altered by us or the caller at a later stage.
|
||||
tbsCert := x509.Certificate{
|
||||
SignatureAlgorithm: precert.SignatureAlgorithm,
|
||||
PublicKeyAlgorithm: precert.PublicKeyAlgorithm,
|
||||
PublicKey: precert.PublicKey,
|
||||
Version: precert.Version,
|
||||
SerialNumber: precert.SerialNumber,
|
||||
Issuer: precert.Issuer,
|
||||
Subject: precert.Subject,
|
||||
NotBefore: precert.NotBefore,
|
||||
NotAfter: precert.NotAfter,
|
||||
KeyUsage: precert.KeyUsage,
|
||||
BasicConstraintsValid: precert.BasicConstraintsValid,
|
||||
SignatureAlgorithm: precert.SignatureAlgorithm,
|
||||
PublicKeyAlgorithm: precert.PublicKeyAlgorithm,
|
||||
PublicKey: precert.PublicKey,
|
||||
Version: precert.Version,
|
||||
SerialNumber: precert.SerialNumber,
|
||||
Issuer: precert.Issuer,
|
||||
Subject: precert.Subject,
|
||||
NotBefore: precert.NotBefore,
|
||||
NotAfter: precert.NotAfter,
|
||||
KeyUsage: precert.KeyUsage,
|
||||
BasicConstraintsValid: precert.BasicConstraintsValid,
|
||||
IsCA: precert.IsCA,
|
||||
MaxPathLen: precert.MaxPathLen,
|
||||
MaxPathLenZero: precert.MaxPathLenZero,
|
||||
|
2
vendor/github.com/cloudflare/cfssl/signer/signer.go
generated
vendored
2
vendor/github.com/cloudflare/cfssl/signer/signer.go
generated
vendored
@ -192,6 +192,7 @@ func ParseCertificateRequest(s Signer, csrBytes []byte) (template *x509.Certific
|
||||
DNSNames: csrv.DNSNames,
|
||||
IPAddresses: csrv.IPAddresses,
|
||||
EmailAddresses: csrv.EmailAddresses,
|
||||
URIs: csrv.URIs,
|
||||
}
|
||||
|
||||
for _, val := range csrv.Extensions {
|
||||
@ -320,6 +321,7 @@ func FillTemplate(template *x509.Certificate, defaultProfile, profile *config.Si
|
||||
}
|
||||
template.DNSNames = nil
|
||||
template.EmailAddresses = nil
|
||||
template.URIs = nil
|
||||
}
|
||||
template.SubjectKeyId = ski
|
||||
|
||||
|
13
vendor/k8s.io/apimachinery/pkg/util/validation/validation.go
generated
vendored
13
vendor/k8s.io/apimachinery/pkg/util/validation/validation.go
generated
vendored
@ -87,6 +87,8 @@ func IsFullyQualifiedName(fldPath *field.Path, name string) field.ErrorList {
|
||||
|
||||
const labelValueFmt string = "(" + qualifiedNameFmt + ")?"
|
||||
const labelValueErrMsg string = "a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character"
|
||||
|
||||
// LabelValueMaxLength is a label's max length
|
||||
const LabelValueMaxLength int = 63
|
||||
|
||||
var labelValueRegexp = regexp.MustCompile("^" + labelValueFmt + "$")
|
||||
@ -107,6 +109,8 @@ func IsValidLabelValue(value string) []string {
|
||||
|
||||
const dns1123LabelFmt string = "[a-z0-9]([-a-z0-9]*[a-z0-9])?"
|
||||
const dns1123LabelErrMsg string = "a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character"
|
||||
|
||||
// DNS1123LabelMaxLength is a label's max length in DNS (RFC 1123)
|
||||
const DNS1123LabelMaxLength int = 63
|
||||
|
||||
var dns1123LabelRegexp = regexp.MustCompile("^" + dns1123LabelFmt + "$")
|
||||
@ -126,6 +130,8 @@ func IsDNS1123Label(value string) []string {
|
||||
|
||||
const dns1123SubdomainFmt string = dns1123LabelFmt + "(\\." + dns1123LabelFmt + ")*"
|
||||
const dns1123SubdomainErrorMsg string = "a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character"
|
||||
|
||||
// DNS1123SubdomainMaxLength is a subdomain's max length in DNS (RFC 1123)
|
||||
const DNS1123SubdomainMaxLength int = 253
|
||||
|
||||
var dns1123SubdomainRegexp = regexp.MustCompile("^" + dns1123SubdomainFmt + "$")
|
||||
@ -145,6 +151,8 @@ func IsDNS1123Subdomain(value string) []string {
|
||||
|
||||
const dns1035LabelFmt string = "[a-z]([-a-z0-9]*[a-z0-9])?"
|
||||
const dns1035LabelErrMsg string = "a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character"
|
||||
|
||||
// DNS1035LabelMaxLength is a label's max length in DNS (RFC 1035)
|
||||
const DNS1035LabelMaxLength int = 63
|
||||
|
||||
var dns1035LabelRegexp = regexp.MustCompile("^" + dns1035LabelFmt + "$")
|
||||
@ -282,6 +290,7 @@ const percentErrMsg string = "a valid percent string must be a numeric string fo
|
||||
|
||||
var percentRegexp = regexp.MustCompile("^" + percentFmt + "$")
|
||||
|
||||
// IsValidPercent checks that string is in the form of a percentage
|
||||
func IsValidPercent(percent string) []string {
|
||||
if !percentRegexp.MatchString(percent) {
|
||||
return []string{RegexError(percentErrMsg, percentFmt, "1%", "93%")}
|
||||
@ -391,13 +400,13 @@ func hasChDirPrefix(value string) []string {
|
||||
return errs
|
||||
}
|
||||
|
||||
// IsSocketAddr checks that a string conforms is a valid socket address
|
||||
// IsValidSocketAddr checks that string represents a valid socket address
|
||||
// as defined in RFC 789. (e.g 0.0.0.0:10254 or [::]:10254))
|
||||
func IsValidSocketAddr(value string) []string {
|
||||
var errs []string
|
||||
ip, port, err := net.SplitHostPort(value)
|
||||
if err != nil {
|
||||
return append(errs, "must be a valid socket address format, (e.g. 0.0.0.0:10254 or [::]:10254)")
|
||||
errs = append(errs, "must be a valid socket address format, (e.g. 0.0.0.0:10254 or [::]:10254)")
|
||||
return errs
|
||||
}
|
||||
portInt, _ := strconv.Atoi(port)
|
||||
|
10
vendor/modules.txt
vendored
10
vendor/modules.txt
vendored
@ -1,15 +1,15 @@
|
||||
# github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e
|
||||
github.com/cavaliercoder/go-cpio
|
||||
# github.com/cloudflare/cfssl v0.0.0-20181102015659-ea4033a214e7
|
||||
# github.com/cloudflare/cfssl v0.0.0-20181213083726-b94e044bb51e
|
||||
github.com/cloudflare/cfssl/config
|
||||
github.com/cloudflare/cfssl/csr
|
||||
github.com/cloudflare/cfssl/helpers
|
||||
github.com/cloudflare/cfssl/initca
|
||||
github.com/cloudflare/cfssl/log
|
||||
github.com/cloudflare/cfssl/signer
|
||||
github.com/cloudflare/cfssl/signer/local
|
||||
github.com/cloudflare/cfssl/auth
|
||||
github.com/cloudflare/cfssl/errors
|
||||
github.com/cloudflare/cfssl/log
|
||||
github.com/cloudflare/cfssl/ocsp/config
|
||||
github.com/cloudflare/cfssl/crypto/pkcs7
|
||||
github.com/cloudflare/cfssl/helpers/derhelpers
|
||||
@ -33,7 +33,7 @@ github.com/google/certificate-transparency-go/client/configpb
|
||||
# github.com/pierrec/lz4 v2.0.5+incompatible
|
||||
github.com/pierrec/lz4
|
||||
github.com/pierrec/lz4/internal/xxh32
|
||||
# golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9
|
||||
# golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc
|
||||
golang.org/x/crypto/ocsp
|
||||
golang.org/x/crypto/pkcs12
|
||||
golang.org/x/crypto/ed25519
|
||||
@ -41,12 +41,12 @@ golang.org/x/crypto/cryptobyte
|
||||
golang.org/x/crypto/cryptobyte/asn1
|
||||
golang.org/x/crypto/pkcs12/internal/rc2
|
||||
golang.org/x/crypto/ed25519/internal/edwards25519
|
||||
# golang.org/x/net v0.0.0-20181207154023-610586996380
|
||||
# golang.org/x/net v0.0.0-20190119204137-ed066c81e75e
|
||||
golang.org/x/net/context
|
||||
golang.org/x/net/context/ctxhttp
|
||||
# gopkg.in/yaml.v2 v2.2.2
|
||||
gopkg.in/yaml.v2
|
||||
# k8s.io/apimachinery v0.0.0-20181207080347-f1a02064268b
|
||||
# k8s.io/apimachinery v0.0.0-20190119020841-d41becfba9ee
|
||||
k8s.io/apimachinery/pkg/util/validation
|
||||
k8s.io/apimachinery/pkg/util/validation/field
|
||||
k8s.io/apimachinery/pkg/util/errors
|
||||
|
Reference in New Issue
Block a user