mirror of
https://github.com/micromdm/micromdm/
synced 2026-08-12 04:55:39 +08:00
SCEP request subject is configurable and you can use it with templated SCEP variables like %SerialNumber% etc. (#45)
SCEP request subject configurable via flag --scep-subject or environment MICROMDM_SCEP_SUBJECT
This commit is contained in:
@@ -3,13 +3,14 @@ package enroll
|
||||
import (
|
||||
"golang.org/x/net/context"
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Service interface {
|
||||
Enroll(ctx context.Context) (Profile, error)
|
||||
}
|
||||
|
||||
func NewService(pushCertPath string, pushCertPass string, caCertPath string, scepURL string, scepChallenge string, url string, tlsCertPath string) (Service, error) {
|
||||
func NewService(pushCertPath, pushCertPass, caCertPath, scepURL, scepChallenge, url, tlsCertPath, scepSubject string) (Service, error) {
|
||||
pushTopic, err := GetPushTopicFromPKCS12(pushCertPath, pushCertPass)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -33,19 +34,25 @@ func NewService(pushCertPath string, pushCertPass string, caCertPath string, sce
|
||||
}
|
||||
}
|
||||
|
||||
scepSubject := [][][]string{
|
||||
[][]string{
|
||||
[]string{"O", "MicroMDM"},
|
||||
},
|
||||
[][]string{
|
||||
[]string{"CN", "MDM Identity Certificate UDID"},
|
||||
},
|
||||
if scepSubject == "" {
|
||||
scepSubject = "/O=MicroMDM/CN=MicroMDM Identity (%ComputerName%)"
|
||||
}
|
||||
|
||||
subjectElements := strings.Split(scepSubject, "/")
|
||||
var subject [][][]string
|
||||
|
||||
for _, element := range subjectElements {
|
||||
if element == "" {
|
||||
continue
|
||||
}
|
||||
subjectKeyValue := strings.Split(element, "=")
|
||||
subject = append(subject, [][]string{[]string{subjectKeyValue[0], subjectKeyValue[1]}})
|
||||
}
|
||||
|
||||
return &service{
|
||||
URL: url,
|
||||
SCEPURL: scepURL,
|
||||
SCEPSubject: scepSubject,
|
||||
SCEPSubject: subject,
|
||||
SCEPChallenge: scepChallenge,
|
||||
Topic: pushTopic,
|
||||
CACert: caCert,
|
||||
|
||||
3
main.go
3
main.go
@@ -51,6 +51,7 @@ func main() {
|
||||
flTLSCACert = flag.String("tls-ca-cert", envString("MICROMDM_TLS_CA_CERT", ""), "path to CA certificate")
|
||||
flSCEPURL = flag.String("scep-url", envString("MICROMDM_SCEP_URL", ""), "scep server url. If blank, enroll profile will not use a scep payload.")
|
||||
flSCEPChallenge = flag.String("scep-challenge", envString("MICROMDM_SCEP_CHALLENGE", ""), "scep server challenge")
|
||||
flSCEPSubject = flag.String("scep-subject", envString("MICROMDM_SCEP_SUBJECT", ""), "scep request subject in microsoft string representation")
|
||||
flPGconn = flag.String("postgres", envString("MICROMDM_POSTGRES_CONN_URL", ""), "postgres connection url")
|
||||
flRedisconn = flag.String("redis", envString("MICROMDM_REDIS_CONN_URL", ""), "redis connection url")
|
||||
flVersion = flag.Bool("version", false, "print version information")
|
||||
@@ -251,7 +252,7 @@ func main() {
|
||||
if *flTLSCACert == "" {
|
||||
logger.Log("warn", "You did not specify a CA Certificate to trust via --tls-ca-cert or MICROMDM_TLS_CA_CERT. If your certificates are self signed, devices may not be able to enroll.")
|
||||
}
|
||||
enrollSvc, _ := enroll.NewService(*flPushCert, *flPushPass, *flTLSCACert, *flSCEPURL, *flSCEPChallenge, *flURL, *flTLSCert)
|
||||
enrollSvc, _ := enroll.NewService(*flPushCert, *flPushPass, *flTLSCACert, *flSCEPURL, *flSCEPChallenge, *flURL, *flTLSCert, *flSCEPSubject)
|
||||
enrollHandler := enroll.MakeHTTPHandler(ctx, enrollSvc, httpLogger)
|
||||
mux.Handle("/mdm/enroll", enrollHandler)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user