mirror of
https://github.com/pomerium/pomerium.git
synced 2025-08-03 08:50:42 +02:00
Add additional ACME options (#2695)
The `autocert_ca` and `autocert_email` options have been added to be able to configure CAs that support the ACME protocol as an alternative to Let's Encrypt. Fix ProtoBuf definition for additional autocert options Fix PR comments and add ACME EAB configuration Add configuration option for trusted CAs when talking ACME Fix linter issues copy edits render updated reference to docs Add test for autocert manager configuration Add tests for autocert configuration options Fix CI build issues Don't set empty acme.EAB struct if configuration not set Remove required email when setting custom CA When using a non-default CA it's no longer required to specify an email address. I required this before, because it seemed to cause an issue in which no certificate was issued. The root cause was something different, rendering the hard email requirement pointless. It's still beneficial to specify an email, though. I changed the text in the docs to explain that. Update generated docs Fix failing tests by recreation of a new ACMEManager The default ACMEManager object was reused in multiple tests, resulting in unexpected states when tests run in parallel. By using a new instance for every test, this is no longer an issue.
This commit is contained in:
parent
500405512f
commit
7812c6985d
11 changed files with 1076 additions and 165 deletions
|
@ -1,17 +1,43 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/pomerium/pomerium/pkg/cryptutil"
|
||||
)
|
||||
|
||||
// AutocertOptions contains the options to control the behavior of autocert.
|
||||
type AutocertOptions struct {
|
||||
// Enable enables fully automated certificate management including issuance
|
||||
// and renewal from LetsEncrypt. Must be used in conjunction with Folder.
|
||||
Enable bool `mapstructure:"autocert" yaml:"autocert,omitempty"`
|
||||
|
||||
// CA is the directory URL of a CA supporting the ACME protocol to request
|
||||
// certificates from. This can be used to use an alternative CA than
|
||||
// Let's Encrypt. This setting overrules the UseStaging setting.
|
||||
CA string `mapstructure:"autocert_ca" yaml:"autocert_ca,omitempty"`
|
||||
|
||||
// Email is the email address to use for account registration with the ACME CA.
|
||||
Email string `mapstructure:"autocert_email" yaml:"autocert_email,omitempty"`
|
||||
|
||||
// UseStaging tells autocert to use Let's Encrypt's staging CA which
|
||||
// has less strict usage limits then the (default) production CA.
|
||||
//
|
||||
// https://letsencrypt.org/docs/staging-environment/
|
||||
UseStaging bool `mapstructure:"autocert_use_staging" yaml:"autocert_use_staging,omitempty"`
|
||||
|
||||
// EABKeyID is an ASCII string identifier for the External Account Binding
|
||||
// key that must be used to request a new account with an ACME CA supporting
|
||||
// External Account Binding.
|
||||
EABKeyID string `mapstructure:"autocert_eab_key_id" yaml:"autocert_eab_key_id,omitempty"`
|
||||
|
||||
// EABMACKey is a base64url-encoded secret key corresponding to the EABKeyID to use
|
||||
// when creating a new account with an ACME CA supporting External Account Binding.
|
||||
EABMACKey string `mapstructure:"autocert_eab_mac_key" yaml:"autocert_eab_mac_key,omitempty"`
|
||||
|
||||
// MustStaple will cause autocert to request a certificate with
|
||||
// status_request extension. This will allow the TLS client (the browser)
|
||||
// to fail immediately if Pomerium failed to get an OCSP staple.
|
||||
|
@ -23,4 +49,50 @@ type AutocertOptions struct {
|
|||
// TLS certificates.
|
||||
// defaults to $XDG_DATA_HOME/pomerium
|
||||
Folder string `mapstructure:"autocert_dir" yaml:"autocert_dir,omitempty"`
|
||||
|
||||
// TrustedCA is the base64-encoded certificate (bundle) to trust when communicating with an ACME CA.
|
||||
TrustedCA string `mapstructure:"autocert_trusted_ca" yaml:"autocert_trusted_ca,omitempty"`
|
||||
|
||||
// TrustedCAFile points to a file that contains the certificate (bundle) to trust when communicating with an ACME CA.
|
||||
TrustedCAFile string `mapstructure:"autocert_trusted_ca_file" yaml:"autocert_trusted_ca_file,omitempty"`
|
||||
}
|
||||
|
||||
// Validate ensures the Options fields are valid, and hydrated.
|
||||
func (o *AutocertOptions) Validate() error {
|
||||
|
||||
// validate ACME EAB settings
|
||||
if o.EABKeyID != "" && o.EABMACKey == "" {
|
||||
return errors.New("config: Autocert EAB MAC Key required when Key ID is provided")
|
||||
}
|
||||
if o.EABKeyID == "" && o.EABMACKey != "" {
|
||||
return errors.New("config: Autocert EAB Key ID required when MAC Key is provided")
|
||||
}
|
||||
if o.EABMACKey != "" {
|
||||
if _, err := base64.RawURLEncoding.DecodeString(o.EABMACKey); err != nil {
|
||||
return fmt.Errorf("config: decoding base64-urlencoded MAC Key: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
// validate x509 roots to trust
|
||||
if o.TrustedCA != "" && o.TrustedCAFile != "" {
|
||||
return errors.New("config: providing both Autocert Trusted CA and Trusted CA File is not supported")
|
||||
}
|
||||
if o.TrustedCA != "" {
|
||||
if _, err := base64.StdEncoding.DecodeString(o.TrustedCA); err != nil {
|
||||
return fmt.Errorf("config: decoding trusted certificate pool base64: %w", err)
|
||||
}
|
||||
if _, err := cryptutil.GetCertPool(o.TrustedCA, ""); err != nil {
|
||||
return fmt.Errorf("config: getting trusted certificate pool: %w", err)
|
||||
}
|
||||
}
|
||||
if o.TrustedCAFile != "" {
|
||||
if _, err := ioutil.ReadFile(o.TrustedCAFile); err != nil {
|
||||
return fmt.Errorf("config: bad trusted certificate (bundle) file: %w", err)
|
||||
}
|
||||
if _, err := cryptutil.GetCertPool("", o.TrustedCAFile); err != nil {
|
||||
return fmt.Errorf("config: getting trusted certificate pool: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
186
config/autocert_test.go
Normal file
186
config/autocert_test.go
Normal file
|
@ -0,0 +1,186 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"crypto/ecdsa"
|
||||
"crypto/elliptic"
|
||||
"crypto/rand"
|
||||
"crypto/x509"
|
||||
"crypto/x509/pkix"
|
||||
"encoding/base64"
|
||||
"encoding/pem"
|
||||
"io/ioutil"
|
||||
"math/big"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func newCACertPEM() ([]byte, error) {
|
||||
key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
tpl := &x509.Certificate{
|
||||
SerialNumber: big.NewInt(time.Now().Unix()),
|
||||
Subject: pkix.Name{
|
||||
CommonName: "Test CA",
|
||||
},
|
||||
NotBefore: time.Now(),
|
||||
NotAfter: time.Now().Add(time.Minute * 10),
|
||||
|
||||
KeyUsage: x509.KeyUsageCertSign | x509.KeyUsageDigitalSignature,
|
||||
BasicConstraintsValid: true,
|
||||
IsCA: true,
|
||||
}
|
||||
|
||||
der, err := x509.CreateCertificate(rand.Reader, tpl, tpl, &key.PublicKey, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: der}), nil
|
||||
}
|
||||
|
||||
func TestAutocertOptions_Validate(t *testing.T) {
|
||||
certPEM, err := newCACertPEM()
|
||||
require.NoError(t, err)
|
||||
|
||||
type fields struct {
|
||||
Enable bool
|
||||
CA string
|
||||
Email string
|
||||
UseStaging bool
|
||||
EABKeyID string
|
||||
EABMACKey string
|
||||
MustStaple bool
|
||||
Folder string
|
||||
TrustedCA string
|
||||
TrustedCAFile string
|
||||
}
|
||||
type test struct {
|
||||
fields fields
|
||||
wantErr bool
|
||||
cleanup func()
|
||||
}
|
||||
var tests = map[string]func(t *testing.T) test{
|
||||
"ok/custom-ca": func(t *testing.T) test {
|
||||
return test{
|
||||
fields: fields{
|
||||
CA: "test-ca.example.com/directory",
|
||||
},
|
||||
wantErr: false,
|
||||
}
|
||||
},
|
||||
"ok/eab": func(t *testing.T) test {
|
||||
return test{
|
||||
fields: fields{
|
||||
EABKeyID: "keyID",
|
||||
EABMACKey: "29D7t6-mOuEV5vvBRX0UYF5T7x6fomidhM1kMJco-yw",
|
||||
},
|
||||
wantErr: false,
|
||||
}
|
||||
},
|
||||
"ok/trusted-ca": func(t *testing.T) test {
|
||||
return test{
|
||||
fields: fields{
|
||||
TrustedCA: base64.StdEncoding.EncodeToString(certPEM),
|
||||
},
|
||||
wantErr: false,
|
||||
}
|
||||
},
|
||||
"ok/trusted-ca-file": func(t *testing.T) test {
|
||||
f, err := ioutil.TempFile("", "pomerium-test-ca")
|
||||
require.NoError(t, err)
|
||||
n, err := f.Write(certPEM)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(certPEM), n)
|
||||
return test{
|
||||
fields: fields{
|
||||
TrustedCAFile: f.Name(),
|
||||
},
|
||||
wantErr: false,
|
||||
cleanup: func() { os.Remove(f.Name()) },
|
||||
}
|
||||
},
|
||||
"fail/missing-eab-key": func(t *testing.T) test {
|
||||
return test{
|
||||
fields: fields{
|
||||
EABKeyID: "keyID",
|
||||
},
|
||||
wantErr: true,
|
||||
}
|
||||
},
|
||||
"fail/missing-eab-key-id": func(t *testing.T) test {
|
||||
return test{
|
||||
fields: fields{
|
||||
EABMACKey: "29D7t6-mOuEV5vvBRX0UYF5T7x6fomidhM1kMJco-yw",
|
||||
},
|
||||
wantErr: true,
|
||||
}
|
||||
},
|
||||
"fail/invalid-mac-key": func(t *testing.T) test {
|
||||
return test{
|
||||
fields: fields{
|
||||
EABMACKey: ">invalid-base64-url-encoded-mac-key<",
|
||||
},
|
||||
wantErr: true,
|
||||
}
|
||||
},
|
||||
"fail/trusted-ca-combined": func(t *testing.T) test {
|
||||
f, err := ioutil.TempFile("", "pomerium-test-ca")
|
||||
require.NoError(t, err)
|
||||
n, err := f.Write(certPEM)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(certPEM), n)
|
||||
return test{
|
||||
fields: fields{
|
||||
TrustedCA: base64.StdEncoding.EncodeToString(certPEM),
|
||||
TrustedCAFile: f.Name(),
|
||||
},
|
||||
wantErr: true,
|
||||
cleanup: func() { os.Remove(f.Name()) },
|
||||
}
|
||||
},
|
||||
"fail/trusted-ca-invalid-base64-pem": func(t *testing.T) test {
|
||||
return test{
|
||||
fields: fields{
|
||||
TrustedCA: ">invalid-base-64-data<",
|
||||
},
|
||||
wantErr: true,
|
||||
}
|
||||
},
|
||||
"fail/trusted-ca-missing-file": func(t *testing.T) test {
|
||||
return test{
|
||||
fields: fields{
|
||||
TrustedCAFile: "some-non-existing-file",
|
||||
},
|
||||
wantErr: true,
|
||||
}
|
||||
},
|
||||
}
|
||||
for name, run := range tests {
|
||||
tc := run(t)
|
||||
t.Run(name, func(t *testing.T) {
|
||||
o := &AutocertOptions{
|
||||
Enable: tc.fields.Enable,
|
||||
CA: tc.fields.CA,
|
||||
Email: tc.fields.Email,
|
||||
UseStaging: tc.fields.UseStaging,
|
||||
EABKeyID: tc.fields.EABKeyID,
|
||||
EABMACKey: tc.fields.EABMACKey,
|
||||
MustStaple: tc.fields.MustStaple,
|
||||
Folder: tc.fields.Folder,
|
||||
TrustedCA: tc.fields.TrustedCA,
|
||||
TrustedCAFile: tc.fields.TrustedCAFile,
|
||||
}
|
||||
if err := o.Validate(); (err != nil) != tc.wantErr {
|
||||
t.Errorf("AutocertOptions.Validate() error = %v, wantErr %v", err, tc.wantErr)
|
||||
}
|
||||
if tc.cleanup != nil {
|
||||
tc.cleanup()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
|
@ -728,6 +728,12 @@ func (o *Options) Validate() error {
|
|||
}
|
||||
}
|
||||
|
||||
// validate the Autocert options
|
||||
err = o.AutocertOptions.Validate()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -1228,6 +1234,18 @@ func (o *Options) ApplySettings(ctx context.Context, settings *config.Settings)
|
|||
if settings.Autocert != nil {
|
||||
o.AutocertOptions.Enable = settings.GetAutocert()
|
||||
}
|
||||
if settings.AutocertCa != nil {
|
||||
o.AutocertOptions.CA = settings.GetAutocertCa()
|
||||
}
|
||||
if settings.AutocertEmail != nil {
|
||||
o.AutocertOptions.Email = settings.GetAutocertEmail()
|
||||
}
|
||||
if settings.AutocertEabKeyId != nil {
|
||||
o.AutocertOptions.EABKeyID = settings.GetAutocertEabKeyId()
|
||||
}
|
||||
if settings.AutocertEabMacKey != nil {
|
||||
o.AutocertOptions.EABMACKey = settings.GetAutocertEabMacKey()
|
||||
}
|
||||
if settings.AutocertUseStaging != nil {
|
||||
o.AutocertOptions.UseStaging = settings.GetAutocertUseStaging()
|
||||
}
|
||||
|
@ -1237,6 +1255,12 @@ func (o *Options) ApplySettings(ctx context.Context, settings *config.Settings)
|
|||
if settings.AutocertDir != nil {
|
||||
o.AutocertOptions.Folder = settings.GetAutocertDir()
|
||||
}
|
||||
if settings.AutocertTrustedCa != nil {
|
||||
o.AutocertOptions.TrustedCA = settings.GetAutocertTrustedCa()
|
||||
}
|
||||
if settings.AutocertTrustedCaFile != nil {
|
||||
o.AutocertOptions.TrustedCAFile = settings.GetAutocertTrustedCaFile()
|
||||
}
|
||||
if settings.SkipXffAppend != nil {
|
||||
o.SkipXffAppend = settings.GetSkipXffAppend()
|
||||
}
|
||||
|
|
|
@ -403,30 +403,118 @@ func Test_NewOptionsFromConfigEnvVar(t *testing.T) {
|
|||
}
|
||||
|
||||
func Test_AutoCertOptionsFromEnvVar(t *testing.T) {
|
||||
envs := map[string]string{
|
||||
"AUTOCERT": "true",
|
||||
"AUTOCERT_DIR": "/test",
|
||||
"AUTOCERT_MUST_STAPLE": "true",
|
||||
|
||||
"INSECURE_SERVER": "true",
|
||||
}
|
||||
for k, v := range envs {
|
||||
os.Setenv(k, v)
|
||||
defer os.Unsetenv(k)
|
||||
type test struct {
|
||||
envs map[string]string
|
||||
expected AutocertOptions
|
||||
wantErr bool
|
||||
cleanup func()
|
||||
}
|
||||
|
||||
o, err := newOptionsFromConfig("")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
var tests = map[string]func(t *testing.T) test{
|
||||
"ok/simple": func(t *testing.T) test {
|
||||
envs := map[string]string{
|
||||
"AUTOCERT": "true",
|
||||
"AUTOCERT_DIR": "/test",
|
||||
"AUTOCERT_MUST_STAPLE": "true",
|
||||
|
||||
"INSECURE_SERVER": "true",
|
||||
}
|
||||
return test{
|
||||
envs: envs,
|
||||
expected: AutocertOptions{
|
||||
Enable: true,
|
||||
Folder: "/test",
|
||||
MustStaple: true,
|
||||
},
|
||||
wantErr: false,
|
||||
}
|
||||
},
|
||||
"ok/custom-ca": func(t *testing.T) test {
|
||||
certPEM, err := newCACertPEM()
|
||||
require.NoError(t, err)
|
||||
envs := map[string]string{
|
||||
"AUTOCERT": "true",
|
||||
"AUTOCERT_CA": "test-ca.example.com/directory",
|
||||
"AUTOCERT_EMAIL": "test@example.com",
|
||||
"AUTOCERT_EAB_KEY_ID": "keyID",
|
||||
"AUTOCERT_EAB_MAC_KEY": "fake-key",
|
||||
"AUTOCERT_TRUSTED_CA": base64.StdEncoding.EncodeToString(certPEM),
|
||||
"AUTOCERT_DIR": "/test",
|
||||
"AUTOCERT_MUST_STAPLE": "true",
|
||||
|
||||
"INSECURE_SERVER": "true",
|
||||
}
|
||||
return test{
|
||||
envs: envs,
|
||||
wantErr: false,
|
||||
expected: AutocertOptions{
|
||||
Enable: true,
|
||||
CA: "test-ca.example.com/directory",
|
||||
Email: "test@example.com",
|
||||
EABKeyID: "keyID",
|
||||
EABMACKey: "fake-key",
|
||||
TrustedCA: base64.StdEncoding.EncodeToString(certPEM),
|
||||
Folder: "/test",
|
||||
MustStaple: true,
|
||||
},
|
||||
}
|
||||
},
|
||||
"ok/custom-ca-file": func(t *testing.T) test {
|
||||
certPEM, err := newCACertPEM()
|
||||
require.NoError(t, err)
|
||||
f, err := ioutil.TempFile("", "pomerium-test-ca")
|
||||
require.NoError(t, err)
|
||||
n, err := f.Write(certPEM)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(certPEM), n)
|
||||
envs := map[string]string{
|
||||
"AUTOCERT": "true",
|
||||
"AUTOCERT_CA": "test-ca.example.com/directory",
|
||||
"AUTOCERT_EMAIL": "test@example.com",
|
||||
"AUTOCERT_EAB_KEY_ID": "keyID",
|
||||
"AUTOCERT_EAB_MAC_KEY": "fake-key",
|
||||
"AUTOCERT_TRUSTED_CA_FILE": f.Name(),
|
||||
"AUTOCERT_DIR": "/test",
|
||||
"AUTOCERT_MUST_STAPLE": "true",
|
||||
|
||||
"INSECURE_SERVER": "true",
|
||||
}
|
||||
return test{
|
||||
envs: envs,
|
||||
wantErr: false,
|
||||
expected: AutocertOptions{
|
||||
Enable: true,
|
||||
CA: "test-ca.example.com/directory",
|
||||
Email: "test@example.com",
|
||||
EABKeyID: "keyID",
|
||||
EABMACKey: "fake-key",
|
||||
TrustedCAFile: f.Name(),
|
||||
Folder: "/test",
|
||||
MustStaple: true,
|
||||
},
|
||||
cleanup: func() { os.Remove(f.Name()) },
|
||||
}
|
||||
},
|
||||
}
|
||||
if !o.AutocertOptions.Enable {
|
||||
t.Error("o.AutocertOptions.Enable: want true, got false")
|
||||
}
|
||||
if !o.AutocertOptions.MustStaple {
|
||||
t.Error("o.AutocertOptions.MustStaple: want true, got false")
|
||||
}
|
||||
if o.AutocertOptions.Folder != "/test" {
|
||||
t.Errorf("o.AutocertOptions.Folder: want /test, got %s", o.AutocertOptions.Folder)
|
||||
|
||||
for name, run := range tests {
|
||||
tc := run(t)
|
||||
t.Run(name, func(t *testing.T) {
|
||||
for k, v := range tc.envs {
|
||||
os.Setenv(k, v)
|
||||
defer os.Unsetenv(k)
|
||||
}
|
||||
o, err := newOptionsFromConfig("")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !cmp.Equal(tc.expected, o.AutocertOptions) {
|
||||
t.Errorf("AutoCertOptionsFromEnvVar() diff = %s", cmp.Diff(tc.expected, o.AutocertOptions))
|
||||
}
|
||||
if tc.cleanup != nil {
|
||||
tc.cleanup()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -63,6 +63,36 @@ Autocert requires that ports `80`/`443` be accessible from the internet in order
|
|||
:::
|
||||
|
||||
|
||||
### Autocert CA
|
||||
- Environmental Variable: `AUTOCERT_CA`
|
||||
- Config File Key: `autocert_ca`
|
||||
- Type: `string` containing the directory URL of an ACME CA (e.g. `https://acme.zerossl.com/v2/DV90` for ZeroSSL)
|
||||
- Optional
|
||||
|
||||
Autocert CA is the directory URL of the ACME CA to use when requesting certificates.
|
||||
|
||||
:::tip
|
||||
|
||||
This will overrule the "Autocert Use Staging" setting if set.
|
||||
|
||||
:::
|
||||
|
||||
|
||||
### Autocert Email
|
||||
- Environmental Variable: `AUTOCERT_EMAIL`
|
||||
- Config File Key: `autocert_email`
|
||||
- Type: `string` containing the email address to use when registering an account
|
||||
- Optional
|
||||
|
||||
Autocert Email is the email address to use when requesting certificates from an ACME CA.
|
||||
|
||||
:::tip
|
||||
|
||||
The CA may contact you at this address, for example when a certificate expires.
|
||||
|
||||
:::
|
||||
|
||||
|
||||
### Autocert Must-Staple
|
||||
- Environmental Variable: `AUTOCERT_MUST_STAPLE`
|
||||
- Config File Key: `autocert_must_staple`
|
||||
|
@ -103,6 +133,37 @@ Autocert directory is the path which autocert will store x509 certificate data.
|
|||
Let's Encrypt has strict [usage limits](https://letsencrypt.org/docs/rate-limits/). Enabling this setting allows you to use Let's Encrypt's [staging environment](https://letsencrypt.org/docs/staging-environment/) which has much more lax usage limits.
|
||||
|
||||
|
||||
### Autocert EAB Key ID
|
||||
- Environmental Variable: `AUTOCERT_EAB_KEY_ID`
|
||||
- Config File Key: `autocert_eab_key_id`
|
||||
- Type: `string` containing the identifier for an ACME EAB key to use
|
||||
- Optional
|
||||
|
||||
Autocert EAB Key ID is the key identifier when requesting a certificate from a CA with External Account Binding enabled.
|
||||
|
||||
For more information, please see [RFC8555-#7.3.4](https://datatracker.ietf.org/doc/html/rfc8555#section-7.3.4).
|
||||
|
||||
|
||||
### Autocert EAB MAC Key
|
||||
- Environmental Variable: `AUTOCERT_EAB_MAC_KEY`
|
||||
- Config File Key: `autocert_eab_mac_key`
|
||||
- Type: `string` containing a base64url-encoded secret key
|
||||
- Optional
|
||||
|
||||
Autocert EAB MAC Key is the base64url-encoded secret key corresponding to the Autocert EAB Key ID.
|
||||
|
||||
This setting is required when Autocert EAB Key ID is set.
|
||||
|
||||
|
||||
### Autocert Trusted Certificate Authority
|
||||
- Environment Variable: `AUTOCERT_TRUSTED_CA` / `AUTOCERT_TRUSTED_CA_FILE`
|
||||
- Config File Key: `autocert_trusted_ca` / `autocert_trusted_ca_file`
|
||||
- Type: [base64 encoded] `string` or relative file location
|
||||
- Optional
|
||||
|
||||
The Autocert Trusted Certificate Authority is the x509 CA (bundle) used when communicating with a CA supporting the ACME protocol. If not set, the system trusted roots will be used to verify TLS connections to the ACME CA.
|
||||
|
||||
|
||||
### Certificates
|
||||
- Config File Key: `certificates` (not yet settable using environmental variables)
|
||||
- Config File Key: `certificate` / `certificate_key`
|
||||
|
|
|
@ -82,6 +82,40 @@ settings:
|
|||
:::
|
||||
shortdoc: |
|
||||
Turning on autocert allows Pomerium to automatically retrieve, manage, and renew public facing TLS certificates from Lets Encrypt.
|
||||
- name: "Autocert CA"
|
||||
keys: ["autocert_ca"]
|
||||
attributes: |
|
||||
- Environmental Variable: `AUTOCERT_CA`
|
||||
- Config File Key: `autocert_ca`
|
||||
- Type: `string` containing the directory URL of an ACME CA (e.g. `https://acme.zerossl.com/v2/DV90` for ZeroSSL)
|
||||
- Optional
|
||||
doc: |
|
||||
Autocert CA is the directory URL of the ACME CA to use when requesting certificates.
|
||||
|
||||
:::tip
|
||||
|
||||
This will overrule the "Autocert Use Staging" setting if set.
|
||||
|
||||
:::
|
||||
shortdoc: |
|
||||
Autocert CA is the directory URL of the ACME CA to use when requesting certificates.
|
||||
- name: "Autocert Email"
|
||||
keys: ["autocert_email"]
|
||||
attributes: |
|
||||
- Environmental Variable: `AUTOCERT_EMAIL`
|
||||
- Config File Key: `autocert_email`
|
||||
- Type: `string` containing the email address to use when registering an account
|
||||
- Optional
|
||||
doc: |
|
||||
Autocert Email is the email address to use when requesting certificates from an ACME CA.
|
||||
|
||||
:::tip
|
||||
|
||||
The CA may contact you at this address, for example when a certificate expires.
|
||||
|
||||
:::
|
||||
shortdoc: |
|
||||
Autocert Email is the email address to use when requesting certificates from an ACME CA.
|
||||
- name: "Autocert Must-Staple"
|
||||
keys: ["autocert_must_staple"]
|
||||
attributes: |
|
||||
|
@ -126,6 +160,41 @@ settings:
|
|||
Let's Encrypt has strict [usage limits](https://letsencrypt.org/docs/rate-limits/). Enabling this setting allows you to use Let's Encrypt's [staging environment](https://letsencrypt.org/docs/staging-environment/) which has much more lax usage limits.
|
||||
shortdoc: |
|
||||
Let's Encrypt has strict usage limits. Enabling this setting allows you to use Let's Encrypt's staging environment which has much more lax usage limits.
|
||||
- name: "Autocert EAB Key ID"
|
||||
keys: ["autocert_eab_key_id"]
|
||||
attributes: |
|
||||
- Environmental Variable: `AUTOCERT_EAB_KEY_ID`
|
||||
- Config File Key: `autocert_eab_key_id`
|
||||
- Type: `string` containing the identifier for an ACME EAB key to use
|
||||
- Optional
|
||||
doc: |
|
||||
Autocert EAB Key ID is the key identifier when requesting a certificate from a CA with External Account Binding enabled.
|
||||
|
||||
For more information, please see [RFC8555-#7.3.4](https://datatracker.ietf.org/doc/html/rfc8555#section-7.3.4).
|
||||
shortdoc: |
|
||||
Autocert EAB Key ID is the key identifier when requesting a certificate from a CA with External Account Binding enabled.
|
||||
- name: "Autocert EAB MAC Key"
|
||||
keys: ["autocert_eab_mac_key"]
|
||||
attributes: |
|
||||
- Environmental Variable: `AUTOCERT_EAB_MAC_KEY`
|
||||
- Config File Key: `autocert_eab_mac_key`
|
||||
- Type: `string` containing a base64url-encoded secret key
|
||||
- Optional
|
||||
doc: |
|
||||
Autocert EAB MAC Key is the base64url-encoded secret key corresponding to the Autocert EAB Key ID.
|
||||
|
||||
This setting is required when Autocert EAB Key ID is set.
|
||||
shortdoc: |
|
||||
Autocert EAB MAC Key is the base64url-encoded secret key corresponding to the Autocert EAB Key ID.
|
||||
- name: "Autocert Trusted Certificate Authority"
|
||||
keys: ["autocert_trusted_ca", "autocert_trusted_ca_file"]
|
||||
attributes: |
|
||||
- Environment Variable: `AUTOCERT_TRUSTED_CA` / `AUTOCERT_TRUSTED_CA_FILE`
|
||||
- Config File Key: `autocert_trusted_ca` / `autocert_trusted_ca_file`
|
||||
- Type: [base64 encoded] `string` or relative file location
|
||||
- Optional
|
||||
doc: |
|
||||
The Autocert Trusted Certificate Authority is the x509 CA (bundle) used when communicating with a CA supporting the ACME protocol. If not set, the system trusted roots will be used to verify TLS connections to the ACME CA.
|
||||
- name: "Certificates"
|
||||
keys:
|
||||
[
|
||||
|
|
2
go.mod
2
go.mod
|
@ -33,6 +33,7 @@ require (
|
|||
github.com/hashicorp/go-multierror v1.1.1
|
||||
github.com/hashicorp/golang-lru v0.5.4
|
||||
github.com/martinlindhe/base36 v1.1.0
|
||||
github.com/mholt/acmez v1.0.0
|
||||
github.com/mitchellh/hashstructure/v2 v2.0.2
|
||||
github.com/mitchellh/mapstructure v1.4.2
|
||||
github.com/natefinch/atomic v0.0.0-20200526193002-18c0533a5b09
|
||||
|
@ -181,7 +182,6 @@ require (
|
|||
github.com/mbilski/exhaustivestruct v1.2.0 // indirect
|
||||
github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81 // indirect
|
||||
github.com/mgechev/revive v1.1.1 // indirect
|
||||
github.com/mholt/acmez v1.0.0 // indirect
|
||||
github.com/miekg/dns v1.1.42 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/moby/term v0.0.0-20201216013528-df9cb8a40635 // indirect
|
||||
|
|
|
@ -3,6 +3,7 @@ package autocert
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
@ -12,6 +13,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/caddyserver/certmagic"
|
||||
"github.com/mholt/acmez/acme"
|
||||
"github.com/rs/zerolog"
|
||||
"go.uber.org/zap"
|
||||
|
||||
|
@ -19,6 +21,7 @@ import (
|
|||
"github.com/pomerium/pomerium/internal/httputil"
|
||||
"github.com/pomerium/pomerium/internal/log"
|
||||
"github.com/pomerium/pomerium/internal/telemetry/metrics"
|
||||
"github.com/pomerium/pomerium/pkg/cryptutil"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -136,9 +139,17 @@ func (mgr *Manager) getCertMagicConfig(cfg *config.Config) (*certmagic.Config, e
|
|||
}
|
||||
}
|
||||
acmeMgr := certmagic.NewACMEManager(mgr.certmagic, mgr.acmeTemplate)
|
||||
acmeMgr.Agreed = true
|
||||
if cfg.Options.AutocertOptions.UseStaging {
|
||||
acmeMgr.CA = acmeMgr.TestCA
|
||||
err = configureCertificateAuthority(acmeMgr, cfg.Options.AutocertOptions)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = configureExternalAccountBinding(acmeMgr, cfg.Options.AutocertOptions)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = configureTrustedRoots(acmeMgr, cfg.Options.AutocertOptions)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
acmeMgr.DisableTLSALPNChallenge = true
|
||||
mgr.certmagic.Issuers = []certmagic.Issuer{acmeMgr}
|
||||
|
@ -335,6 +346,60 @@ func (mgr *Manager) GetConfig() *config.Config {
|
|||
return mgr.config
|
||||
}
|
||||
|
||||
// configureCertificateAuthority configures the acmeMgr ACME Certificate Authority settings.
|
||||
func configureCertificateAuthority(acmeMgr *certmagic.ACMEManager, opts config.AutocertOptions) error {
|
||||
acmeMgr.Agreed = true
|
||||
if opts.UseStaging {
|
||||
acmeMgr.CA = acmeMgr.TestCA
|
||||
}
|
||||
if opts.CA != "" {
|
||||
acmeMgr.CA = opts.CA // when a CA is specified, it overrides the staging setting
|
||||
}
|
||||
if opts.Email != "" {
|
||||
acmeMgr.Email = opts.Email
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// configureExternalAccountBinding configures the acmeMgr ACME External Account Binding settings.
|
||||
func configureExternalAccountBinding(acmeMgr *certmagic.ACMEManager, opts config.AutocertOptions) error {
|
||||
if opts.EABKeyID != "" || opts.EABMACKey != "" {
|
||||
acmeMgr.ExternalAccount = &acme.EAB{}
|
||||
}
|
||||
if opts.EABKeyID != "" {
|
||||
acmeMgr.ExternalAccount.KeyID = opts.EABKeyID
|
||||
}
|
||||
if opts.EABMACKey != "" {
|
||||
_, err := base64.RawURLEncoding.DecodeString(opts.EABMACKey)
|
||||
if err != nil {
|
||||
return fmt.Errorf("config: decoding base64-urlencoded MAC Key: %w", err)
|
||||
}
|
||||
acmeMgr.ExternalAccount.MACKey = opts.EABMACKey
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// configureTrustedRoots configures the acmeMgr x509 roots to trust when communicating with an ACME CA.
|
||||
func configureTrustedRoots(acmeMgr *certmagic.ACMEManager, opts config.AutocertOptions) error {
|
||||
if opts.TrustedCA != "" {
|
||||
// pool effectively contains the certificate(s) in the TrustedCA base64 PEM appended to the system roots
|
||||
pool, err := cryptutil.GetCertPool(opts.TrustedCA, "")
|
||||
if err != nil {
|
||||
return fmt.Errorf("config: creating trusted certificate pool: %w", err)
|
||||
}
|
||||
acmeMgr.TrustedRoots = pool
|
||||
}
|
||||
if opts.TrustedCAFile != "" {
|
||||
// pool effectively contains the certificate(s) in TrustedCAFile appended to the system roots
|
||||
pool, err := cryptutil.GetCertPool("", opts.TrustedCAFile)
|
||||
if err != nil {
|
||||
return fmt.Errorf("config: creating trusted certificate pool: %w", err)
|
||||
}
|
||||
acmeMgr.TrustedRoots = pool
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func sourceHostnames(cfg *config.Config) []string {
|
||||
policies := cfg.Options.GetAllPolicies()
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ import (
|
|||
"encoding/pem"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"math/big"
|
||||
"net"
|
||||
"net/http"
|
||||
|
@ -25,7 +26,10 @@ import (
|
|||
"github.com/caddyserver/certmagic"
|
||||
"github.com/go-chi/chi"
|
||||
"github.com/go-chi/chi/middleware"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
"github.com/google/uuid"
|
||||
"github.com/mholt/acmez/acme"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"golang.org/x/crypto/ocsp"
|
||||
|
@ -238,6 +242,7 @@ func TestConfig(t *testing.T) {
|
|||
AutocertOptions: config.AutocertOptions{
|
||||
Enable: true,
|
||||
UseStaging: true,
|
||||
Email: "pomerium-test@example.com",
|
||||
MustStaple: true,
|
||||
Folder: tmpdir,
|
||||
},
|
||||
|
@ -363,3 +368,262 @@ func readJWSPayload(r io.Reader, dst interface{}) {
|
|||
bs, _ := base64.RawURLEncoding.DecodeString(req.Payload)
|
||||
_ = json.Unmarshal(bs, dst)
|
||||
}
|
||||
|
||||
func newACMEManager() *certmagic.ACMEManager {
|
||||
return &certmagic.ACMEManager{
|
||||
CA: certmagic.DefaultACME.CA,
|
||||
TestCA: certmagic.DefaultACME.TestCA,
|
||||
}
|
||||
}
|
||||
|
||||
func Test_configureCertificateAuthority(t *testing.T) {
|
||||
type args struct {
|
||||
acmeMgr *certmagic.ACMEManager
|
||||
opts config.AutocertOptions
|
||||
}
|
||||
type test struct {
|
||||
args args
|
||||
expected *certmagic.ACMEManager
|
||||
wantErr bool
|
||||
}
|
||||
var tests = map[string]func(t *testing.T) test{
|
||||
"ok/default": func(t *testing.T) test {
|
||||
return test{
|
||||
args: args{
|
||||
acmeMgr: newACMEManager(),
|
||||
opts: config.AutocertOptions{},
|
||||
},
|
||||
expected: &certmagic.ACMEManager{
|
||||
Agreed: true,
|
||||
CA: certmagic.DefaultACME.CA,
|
||||
TestCA: certmagic.DefaultACME.TestCA,
|
||||
},
|
||||
wantErr: false,
|
||||
}
|
||||
},
|
||||
"ok/staging": func(t *testing.T) test {
|
||||
return test{
|
||||
args: args{
|
||||
acmeMgr: newACMEManager(),
|
||||
opts: config.AutocertOptions{
|
||||
UseStaging: true,
|
||||
},
|
||||
},
|
||||
expected: &certmagic.ACMEManager{
|
||||
Agreed: true,
|
||||
CA: certmagic.DefaultACME.TestCA,
|
||||
TestCA: certmagic.DefaultACME.TestCA,
|
||||
},
|
||||
wantErr: false,
|
||||
}
|
||||
},
|
||||
"ok/custom-ca-staging": func(t *testing.T) test {
|
||||
return test{
|
||||
args: args{
|
||||
acmeMgr: newACMEManager(),
|
||||
opts: config.AutocertOptions{
|
||||
CA: "test-ca.example.com/directory",
|
||||
Email: "test@example.com",
|
||||
UseStaging: true,
|
||||
},
|
||||
},
|
||||
expected: &certmagic.ACMEManager{
|
||||
Agreed: true,
|
||||
CA: "test-ca.example.com/directory",
|
||||
Email: "test@example.com",
|
||||
TestCA: certmagic.DefaultACME.TestCA,
|
||||
},
|
||||
wantErr: false,
|
||||
}
|
||||
},
|
||||
}
|
||||
for name, run := range tests {
|
||||
tc := run(t)
|
||||
t.Run(name, func(t *testing.T) {
|
||||
if err := configureCertificateAuthority(tc.args.acmeMgr, tc.args.opts); (err != nil) != tc.wantErr {
|
||||
t.Errorf("configureCertificateAuthority() error = %v, wantErr %v", err, tc.wantErr)
|
||||
}
|
||||
if !cmp.Equal(tc.expected, tc.args.acmeMgr, cmpopts.IgnoreUnexported(certmagic.ACMEManager{})) {
|
||||
t.Errorf("configureCertificateAuthority() diff = %s", cmp.Diff(tc.expected, tc.args.acmeMgr, cmpopts.IgnoreUnexported(certmagic.ACMEManager{})))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_configureExternalAccountBinding(t *testing.T) {
|
||||
type args struct {
|
||||
acmeMgr *certmagic.ACMEManager
|
||||
opts config.AutocertOptions
|
||||
}
|
||||
type test struct {
|
||||
args args
|
||||
expected *certmagic.ACMEManager
|
||||
wantErr bool
|
||||
}
|
||||
var tests = map[string]func(t *testing.T) test{
|
||||
"ok": func(t *testing.T) test {
|
||||
return test{
|
||||
args: args{
|
||||
acmeMgr: newACMEManager(),
|
||||
opts: config.AutocertOptions{
|
||||
EABKeyID: "keyID",
|
||||
EABMACKey: "29D7t6-mOuEV5vvBRX0UYF5T7x6fomidhM1kMJco-yw",
|
||||
},
|
||||
},
|
||||
expected: &certmagic.ACMEManager{
|
||||
CA: certmagic.DefaultACME.CA,
|
||||
TestCA: certmagic.DefaultACME.TestCA,
|
||||
ExternalAccount: &acme.EAB{
|
||||
KeyID: "keyID",
|
||||
MACKey: "29D7t6-mOuEV5vvBRX0UYF5T7x6fomidhM1kMJco-yw",
|
||||
},
|
||||
},
|
||||
wantErr: false,
|
||||
}
|
||||
},
|
||||
"fail/error-decoding-mac-key": func(t *testing.T) test {
|
||||
return test{
|
||||
args: args{
|
||||
acmeMgr: newACMEManager(),
|
||||
opts: config.AutocertOptions{
|
||||
EABKeyID: "keyID",
|
||||
EABMACKey: ">invalid-base-64-data<",
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
for name, run := range tests {
|
||||
tc := run(t)
|
||||
t.Run(name, func(t *testing.T) {
|
||||
err := configureExternalAccountBinding(tc.args.acmeMgr, tc.args.opts)
|
||||
if (err != nil) != tc.wantErr {
|
||||
t.Errorf("configureExternalAccountBinding() error = %v, wantErr %v", err, tc.wantErr)
|
||||
}
|
||||
if err == nil && !cmp.Equal(tc.expected, tc.args.acmeMgr, cmpopts.IgnoreUnexported(certmagic.ACMEManager{})) {
|
||||
t.Errorf("configureCertificateAuthority() diff = %s", cmp.Diff(tc.expected, tc.args.acmeMgr, cmpopts.IgnoreUnexported(certmagic.ACMEManager{})))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_configureTrustedRoots(t *testing.T) {
|
||||
ca, err := newTestCA()
|
||||
require.NoError(t, err)
|
||||
type args struct {
|
||||
acmeMgr *certmagic.ACMEManager
|
||||
opts config.AutocertOptions
|
||||
}
|
||||
type test struct {
|
||||
args args
|
||||
expected *certmagic.ACMEManager
|
||||
wantErr bool
|
||||
cleanup func()
|
||||
}
|
||||
var tests = map[string]func(t *testing.T) test{
|
||||
"ok/pem": func(t *testing.T) test {
|
||||
copy, err := x509.SystemCertPool()
|
||||
require.NoError(t, err)
|
||||
ok := copy.AppendCertsFromPEM(ca.certPEM)
|
||||
require.Equal(t, true, ok)
|
||||
return test{
|
||||
args: args{
|
||||
acmeMgr: newACMEManager(),
|
||||
opts: config.AutocertOptions{
|
||||
TrustedCA: base64.StdEncoding.EncodeToString(ca.certPEM),
|
||||
},
|
||||
},
|
||||
expected: &certmagic.ACMEManager{
|
||||
CA: certmagic.DefaultACME.CA,
|
||||
TestCA: certmagic.DefaultACME.TestCA,
|
||||
TrustedRoots: copy,
|
||||
},
|
||||
wantErr: false,
|
||||
}
|
||||
},
|
||||
"ok/file": func(t *testing.T) test {
|
||||
copy, err := x509.SystemCertPool()
|
||||
require.NoError(t, err)
|
||||
ok := copy.AppendCertsFromPEM(ca.certPEM)
|
||||
require.Equal(t, true, ok)
|
||||
f, err := ioutil.TempFile("", "pomerium-test-ca")
|
||||
require.NoError(t, err)
|
||||
n, err := f.Write(ca.certPEM)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(ca.certPEM), n)
|
||||
return test{
|
||||
args: args{
|
||||
acmeMgr: newACMEManager(),
|
||||
opts: config.AutocertOptions{
|
||||
TrustedCAFile: f.Name(),
|
||||
},
|
||||
},
|
||||
expected: &certmagic.ACMEManager{
|
||||
CA: certmagic.DefaultACME.CA,
|
||||
TestCA: certmagic.DefaultACME.TestCA,
|
||||
TrustedRoots: copy,
|
||||
},
|
||||
wantErr: false,
|
||||
cleanup: func() {
|
||||
os.Remove(f.Name())
|
||||
},
|
||||
}
|
||||
},
|
||||
"fail/pem": func(t *testing.T) test {
|
||||
copy, err := x509.SystemCertPool()
|
||||
require.NoError(t, err)
|
||||
return test{
|
||||
args: args{
|
||||
acmeMgr: newACMEManager(),
|
||||
opts: config.AutocertOptions{
|
||||
TrustedCA: ">invalid-base-64-ca-pem<",
|
||||
},
|
||||
},
|
||||
expected: &certmagic.ACMEManager{
|
||||
CA: certmagic.DefaultACME.CA,
|
||||
TestCA: certmagic.DefaultACME.TestCA,
|
||||
TrustedRoots: copy,
|
||||
},
|
||||
wantErr: true,
|
||||
}
|
||||
},
|
||||
"fail/file": func(t *testing.T) test {
|
||||
copy, err := x509.SystemCertPool()
|
||||
require.NoError(t, err)
|
||||
return test{
|
||||
args: args{
|
||||
acmeMgr: newACMEManager(),
|
||||
opts: config.AutocertOptions{
|
||||
TrustedCAFile: "some-non-existing-file",
|
||||
},
|
||||
},
|
||||
expected: &certmagic.ACMEManager{
|
||||
CA: certmagic.DefaultACME.CA,
|
||||
TestCA: certmagic.DefaultACME.TestCA,
|
||||
TrustedRoots: copy,
|
||||
},
|
||||
wantErr: true,
|
||||
}
|
||||
},
|
||||
}
|
||||
for name, run := range tests {
|
||||
tc := run(t)
|
||||
t.Run(name, func(t *testing.T) {
|
||||
err := configureTrustedRoots(tc.args.acmeMgr, tc.args.opts)
|
||||
if (err != nil) != tc.wantErr {
|
||||
t.Errorf("configureTrustedRoots() error = %v, wantErr %v", err, tc.wantErr)
|
||||
}
|
||||
if err == nil && !cmp.Equal(tc.expected, tc.args.acmeMgr, cmpopts.IgnoreUnexported(certmagic.ACMEManager{}, x509.CertPool{})) {
|
||||
t.Errorf("configureCertificateAuthority() diff = %s", cmp.Diff(tc.expected, tc.args.acmeMgr, cmpopts.IgnoreUnexported(certmagic.ACMEManager{}, x509.CertPool{})))
|
||||
}
|
||||
if err == nil && !cmp.Equal(tc.expected.TrustedRoots.Subjects(), tc.args.acmeMgr.TrustedRoots.Subjects()) {
|
||||
t.Errorf("configureCertificateAuthority() subjects diff = %s", cmp.Diff(tc.expected.TrustedRoots.Subjects(), tc.args.acmeMgr.TrustedRoots.Subjects()))
|
||||
}
|
||||
if tc.cleanup != nil {
|
||||
tc.cleanup()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -861,6 +861,12 @@ type Settings struct {
|
|||
ClientCrlFile *string `protobuf:"bytes,75,opt,name=client_crl_file,json=clientCrlFile,proto3,oneof" json:"client_crl_file,omitempty"`
|
||||
GoogleCloudServerlessAuthenticationServiceAccount *string `protobuf:"bytes,55,opt,name=google_cloud_serverless_authentication_service_account,json=googleCloudServerlessAuthenticationServiceAccount,proto3,oneof" json:"google_cloud_serverless_authentication_service_account,omitempty"`
|
||||
Autocert *bool `protobuf:"varint,56,opt,name=autocert,proto3,oneof" json:"autocert,omitempty"`
|
||||
AutocertCa *string `protobuf:"bytes,76,opt,name=autocert_ca,json=autocertCa,proto3,oneof" json:"autocert_ca,omitempty"`
|
||||
AutocertEmail *string `protobuf:"bytes,77,opt,name=autocert_email,json=autocertEmail,proto3,oneof" json:"autocert_email,omitempty"`
|
||||
AutocertEabKeyId *string `protobuf:"bytes,78,opt,name=autocert_eab_key_id,json=autocertEabKeyId,proto3,oneof" json:"autocert_eab_key_id,omitempty"`
|
||||
AutocertEabMacKey *string `protobuf:"bytes,79,opt,name=autocert_eab_mac_key,json=autocertEabMacKey,proto3,oneof" json:"autocert_eab_mac_key,omitempty"`
|
||||
AutocertTrustedCa *string `protobuf:"bytes,80,opt,name=autocert_trusted_ca,json=autocertTrustedCa,proto3,oneof" json:"autocert_trusted_ca,omitempty"`
|
||||
AutocertTrustedCaFile *string `protobuf:"bytes,81,opt,name=autocert_trusted_ca_file,json=autocertTrustedCaFile,proto3,oneof" json:"autocert_trusted_ca_file,omitempty"`
|
||||
AutocertUseStaging *bool `protobuf:"varint,57,opt,name=autocert_use_staging,json=autocertUseStaging,proto3,oneof" json:"autocert_use_staging,omitempty"`
|
||||
AutocertMustStaple *bool `protobuf:"varint,58,opt,name=autocert_must_staple,json=autocertMustStaple,proto3,oneof" json:"autocert_must_staple,omitempty"`
|
||||
AutocertDir *string `protobuf:"bytes,59,opt,name=autocert_dir,json=autocertDir,proto3,oneof" json:"autocert_dir,omitempty"`
|
||||
|
@ -1316,6 +1322,48 @@ func (x *Settings) GetAutocert() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (x *Settings) GetAutocertCa() string {
|
||||
if x != nil && x.AutocertCa != nil {
|
||||
return *x.AutocertCa
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Settings) GetAutocertEmail() string {
|
||||
if x != nil && x.AutocertEmail != nil {
|
||||
return *x.AutocertEmail
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Settings) GetAutocertEabKeyId() string {
|
||||
if x != nil && x.AutocertEabKeyId != nil {
|
||||
return *x.AutocertEabKeyId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Settings) GetAutocertEabMacKey() string {
|
||||
if x != nil && x.AutocertEabMacKey != nil {
|
||||
return *x.AutocertEabMacKey
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Settings) GetAutocertTrustedCa() string {
|
||||
if x != nil && x.AutocertTrustedCa != nil {
|
||||
return *x.AutocertTrustedCa
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Settings) GetAutocertTrustedCaFile() string {
|
||||
if x != nil && x.AutocertTrustedCaFile != nil {
|
||||
return *x.AutocertTrustedCaFile
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Settings) GetAutocertUseStaging() bool {
|
||||
if x != nil && x.AutocertUseStaging != nil {
|
||||
return *x.AutocertUseStaging
|
||||
|
@ -1707,7 +1755,7 @@ var file_config_proto_rawDesc = []byte{
|
|||
0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
||||
0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
|
||||
0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
|
||||
0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xef, 0x2a, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69,
|
||||
0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa7, 0x2e, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69,
|
||||
0x6e, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x47, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e,
|
||||
0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01,
|
||||
|
@ -1914,146 +1962,174 @@ var file_config_proto_rawDesc = []byte{
|
|||
0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69,
|
||||
0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08,
|
||||
0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x38, 0x20, 0x01, 0x28, 0x08, 0x48, 0x33,
|
||||
0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a,
|
||||
0x14, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74,
|
||||
0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x39, 0x20, 0x01, 0x28, 0x08, 0x48, 0x34, 0x52, 0x12, 0x61,
|
||||
0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x55, 0x73, 0x65, 0x53, 0x74, 0x61, 0x67, 0x69, 0x6e,
|
||||
0x67, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74,
|
||||
0x5f, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x18, 0x3a, 0x20, 0x01,
|
||||
0x28, 0x08, 0x48, 0x35, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x4d, 0x75,
|
||||
0x73, 0x74, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x61,
|
||||
0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x3b, 0x20, 0x01, 0x28,
|
||||
0x09, 0x48, 0x36, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x44, 0x69, 0x72,
|
||||
0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x78, 0x66, 0x66, 0x5f,
|
||||
0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x37, 0x52, 0x0d,
|
||||
0x73, 0x6b, 0x69, 0x70, 0x58, 0x66, 0x66, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x88, 0x01, 0x01,
|
||||
0x12, 0x34, 0x0a, 0x14, 0x78, 0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73,
|
||||
0x74, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x38,
|
||||
0x52, 0x11, 0x78, 0x66, 0x66, 0x4e, 0x75, 0x6d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x48,
|
||||
0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x26, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,
|
||||
0x6d, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f,
|
||||
0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74,
|
||||
0x18, 0x44, 0x20, 0x03, 0x28, 0x09, 0x52, 0x23, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d,
|
||||
0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61,
|
||||
0x69, 0x6e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x61,
|
||||
0x75, 0x64, 0x69, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
|
||||
0x2e, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e,
|
||||
0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x48, 0x39, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4b,
|
||||
0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f,
|
||||
0x74, 0x79, 0x70, 0x65, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5c, 0x2e, 0x65, 0x6e, 0x76,
|
||||
0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69,
|
||||
0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x68, 0x74,
|
||||
0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61,
|
||||
0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e,
|
||||
0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x43,
|
||||
0x6f, 0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48, 0x3a, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65,
|
||||
0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x81, 0x01, 0x0a, 0x0b, 0x43, 0x65, 0x72,
|
||||
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x65, 0x72, 0x74,
|
||||
0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x65, 0x72,
|
||||
0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c,
|
||||
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65,
|
||||
0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03,
|
||||
0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x65, 0x72, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
|
||||
0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01,
|
||||
0x28, 0x0c, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x40, 0x0a, 0x12,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74,
|
||||
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x45,
|
||||
0x0a, 0x17, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61,
|
||||
0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
|
||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
|
||||
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
|
||||
0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4a, 0x77, 0x74, 0x43, 0x6c, 0x61, 0x69,
|
||||
0x6d, 0x73, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
|
||||
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
|
||||
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69,
|
||||
0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x08,
|
||||
0x0a, 0x06, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, 0x67,
|
||||
0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79,
|
||||
0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73,
|
||||
0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b, 0x0a, 0x09,
|
||||
0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64,
|
||||
0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75,
|
||||
0x72, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x6e,
|
||||
0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42,
|
||||
0x15, 0x0a, 0x13, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63,
|
||||
0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f,
|
||||
0x75, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
|
||||
0x6f, 0x75, 0x74, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x69,
|
||||
0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61,
|
||||
0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76,
|
||||
0x69, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x75, 0x74, 0x68,
|
||||
0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63,
|
||||
0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69,
|
||||
0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69,
|
||||
0x65, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f,
|
||||
0x6b, 0x69, 0x65, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63,
|
||||
0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x42, 0x13, 0x0a, 0x11,
|
||||
0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6f, 0x6e, 0x6c,
|
||||
0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x65, 0x78, 0x70,
|
||||
0x69, 0x72, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x63, 0x6c, 0x69, 0x65,
|
||||
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x63, 0x6c,
|
||||
0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f,
|
||||
0x69, 0x64, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x13, 0x0a, 0x11,
|
||||
0x5f, 0x69, 0x64, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x75, 0x72,
|
||||
0x6c, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
|
||||
0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x69, 0x64,
|
||||
0x70, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
|
||||
0x6f, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f,
|
||||
0x69, 0x64, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x64, 0x69, 0x72, 0x65,
|
||||
0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x1c,
|
||||
0x0a, 0x1a, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x63, 0x65, 0x72, 0x74,
|
||||
0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x18, 0x0a, 0x16,
|
||||
0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74,
|
||||
0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69,
|
||||
0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
|
||||
0x5f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e,
|
||||
0x67, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
|
||||
0x74, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f,
|
||||
0x75, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x61,
|
||||
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x42, 0x16, 0x0a,
|
||||
0x14, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
|
||||
0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
|
||||
0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x42, 0x19, 0x0a, 0x17, 0x5f,
|
||||
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63,
|
||||
0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69,
|
||||
0x6e, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f,
|
||||
0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72,
|
||||
0x61, 0x74, 0x65, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f,
|
||||
0x6a, 0x61, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
|
||||
0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x74, 0x72,
|
||||
0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x61, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65,
|
||||
0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
|
||||
0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x7a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x5f, 0x65,
|
||||
0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x67, 0x72, 0x70, 0x63,
|
||||
0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x67, 0x72, 0x70,
|
||||
0x63, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66,
|
||||
0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x42,
|
||||
0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x42, 0x11, 0x0a,
|
||||
0x0f, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65,
|
||||
0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x6c, 0x42,
|
||||
0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x6c, 0x5f, 0x66,
|
||||
0x69, 0x6c, 0x65, 0x42, 0x39, 0x0a, 0x37, 0x5f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x63,
|
||||
0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x5f,
|
||||
0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73,
|
||||
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0b,
|
||||
0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f,
|
||||
0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a,
|
||||
0x0b, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x4c, 0x20, 0x01,
|
||||
0x28, 0x09, 0x48, 0x34, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x43, 0x61,
|
||||
0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f,
|
||||
0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x35, 0x52, 0x0d, 0x61,
|
||||
0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12,
|
||||
0x32, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x61, 0x62, 0x5f,
|
||||
0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x36, 0x52, 0x10,
|
||||
0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x45, 0x61, 0x62, 0x4b, 0x65, 0x79, 0x49, 0x64,
|
||||
0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f,
|
||||
0x65, 0x61, 0x62, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x4f, 0x20, 0x01, 0x28,
|
||||
0x09, 0x48, 0x37, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x45, 0x61, 0x62,
|
||||
0x4d, 0x61, 0x63, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x61, 0x75, 0x74,
|
||||
0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61,
|
||||
0x18, 0x50, 0x20, 0x01, 0x28, 0x09, 0x48, 0x38, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65,
|
||||
0x72, 0x74, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3c,
|
||||
0x0a, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74,
|
||||
0x65, 0x64, 0x5f, 0x63, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x51, 0x20, 0x01, 0x28, 0x09,
|
||||
0x48, 0x39, 0x52, 0x15, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x54, 0x72, 0x75, 0x73,
|
||||
0x74, 0x65, 0x64, 0x43, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14,
|
||||
0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61,
|
||||
0x67, 0x69, 0x6e, 0x67, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72,
|
||||
0x74, 0x5f, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x42, 0x0f, 0x0a,
|
||||
0x0d, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x42, 0x12,
|
||||
0x0a, 0x10, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, 0x70, 0x65,
|
||||
0x6e, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74,
|
||||
0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
|
||||
0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f,
|
||||
0x64, 0x65, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68,
|
||||
0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2f,
|
||||
0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x72, 0x70,
|
||||
0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x67, 0x69, 0x6e, 0x67, 0x18, 0x39, 0x20, 0x01, 0x28, 0x08, 0x48, 0x3a, 0x52, 0x12, 0x61, 0x75,
|
||||
0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x55, 0x73, 0x65, 0x53, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67,
|
||||
0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f,
|
||||
0x6d, 0x75, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x18, 0x3a, 0x20, 0x01, 0x28,
|
||||
0x08, 0x48, 0x3b, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x4d, 0x75, 0x73,
|
||||
0x74, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x61, 0x75,
|
||||
0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x09,
|
||||
0x48, 0x3c, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x44, 0x69, 0x72, 0x88,
|
||||
0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61,
|
||||
0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x3d, 0x52, 0x0d, 0x73,
|
||||
0x6b, 0x69, 0x70, 0x58, 0x66, 0x66, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12,
|
||||
0x34, 0x0a, 0x14, 0x78, 0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74,
|
||||
0x65, 0x64, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x3e, 0x52,
|
||||
0x11, 0x78, 0x66, 0x66, 0x4e, 0x75, 0x6d, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x48, 0x6f,
|
||||
0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x26, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d,
|
||||
0x6d, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x64,
|
||||
0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x18,
|
||||
0x44, 0x20, 0x03, 0x28, 0x09, 0x52, 0x23, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x61,
|
||||
0x74, 0x69, 0x63, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69,
|
||||
0x6e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x61, 0x75,
|
||||
0x64, 0x69, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
|
||||
0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x50,
|
||||
0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x48, 0x3f, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4b, 0x65,
|
||||
0x79, 0x88, 0x01, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x74,
|
||||
0x79, 0x70, 0x65, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5c, 0x2e, 0x65, 0x6e, 0x76, 0x6f,
|
||||
0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x69, 0x6c,
|
||||
0x74, 0x65, 0x72, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x68, 0x74, 0x74,
|
||||
0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6e,
|
||||
0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x6e,
|
||||
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x43, 0x6f,
|
||||
0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48, 0x40, 0x52, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x63,
|
||||
0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x81, 0x01, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74,
|
||||
0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x65, 0x72, 0x74, 0x5f,
|
||||
0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x65, 0x72, 0x74,
|
||||
0x46, 0x69, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x12,
|
||||
0x1d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20,
|
||||
0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x65, 0x72, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1b,
|
||||
0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
|
||||
0x0c, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72,
|
||||
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
|
||||
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x45, 0x0a,
|
||||
0x17, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64,
|
||||
0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
|
||||
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
|
||||
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
||||
0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4a, 0x77, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d,
|
||||
0x73, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
|
||||
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
|
||||
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
|
||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e,
|
||||
0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x08, 0x0a,
|
||||
0x06, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, 0x67, 0x5f,
|
||||
0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f,
|
||||
0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x68,
|
||||
0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
|
||||
0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64,
|
||||
0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72,
|
||||
0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x6e, 0x73,
|
||||
0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x15,
|
||||
0x0a, 0x13, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
|
||||
0x5f, 0x61, 0x64, 0x64, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
|
||||
0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f,
|
||||
0x75, 0x74, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x69, 0x6d,
|
||||
0x65, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x75,
|
||||
0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69,
|
||||
0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65,
|
||||
0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
|
||||
0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65,
|
||||
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65,
|
||||
0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b,
|
||||
0x69, 0x65, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f,
|
||||
0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f,
|
||||
0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6f, 0x6e, 0x6c, 0x79,
|
||||
0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x69,
|
||||
0x72, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e,
|
||||
0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x63, 0x6c, 0x69,
|
||||
0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69,
|
||||
0x64, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x13, 0x0a, 0x11, 0x5f,
|
||||
0x69, 0x64, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c,
|
||||
0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
|
||||
0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x69, 0x64, 0x70,
|
||||
0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f,
|
||||
0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69,
|
||||
0x64, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63,
|
||||
0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x1c, 0x0a,
|
||||
0x1a, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69,
|
||||
0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f,
|
||||
0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68,
|
||||
0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
|
||||
0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f,
|
||||
0x66, 0x69, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67,
|
||||
0x5f, 0x6b, 0x65, 0x79, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
|
||||
0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
|
||||
0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x61, 0x64,
|
||||
0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
|
||||
0x73, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x42, 0x16, 0x0a, 0x14,
|
||||
0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
|
||||
0x63, 0x61, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
|
||||
0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d,
|
||||
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61,
|
||||
0x5f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e,
|
||||
0x67, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x74,
|
||||
0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61,
|
||||
0x74, 0x65, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x6a,
|
||||
0x61, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f,
|
||||
0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x74, 0x72, 0x61,
|
||||
0x63, 0x69, 0x6e, 0x67, 0x5f, 0x6a, 0x61, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e,
|
||||
0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x74,
|
||||
0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x7a, 0x69, 0x70, 0x6b, 0x69, 0x6e, 0x5f, 0x65, 0x6e,
|
||||
0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f,
|
||||
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x67, 0x72, 0x70, 0x63,
|
||||
0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x6f,
|
||||
0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0c,
|
||||
0x0a, 0x0a, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x42, 0x11, 0x0a, 0x0f,
|
||||
0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x42,
|
||||
0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x6c, 0x42, 0x12,
|
||||
0x0a, 0x10, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x6c, 0x5f, 0x66, 0x69,
|
||||
0x6c, 0x65, 0x42, 0x39, 0x0a, 0x37, 0x5f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x63, 0x6c,
|
||||
0x6f, 0x75, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x61,
|
||||
0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65,
|
||||
0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0b, 0x0a,
|
||||
0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61,
|
||||
0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x61, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61,
|
||||
0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x16, 0x0a,
|
||||
0x14, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x61, 0x62, 0x5f, 0x6b,
|
||||
0x65, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65,
|
||||
0x72, 0x74, 0x5f, 0x65, 0x61, 0x62, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x16,
|
||||
0x0a, 0x14, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x74, 0x72, 0x75, 0x73,
|
||||
0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63,
|
||||
0x65, 0x72, 0x74, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x5f, 0x66,
|
||||
0x69, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74,
|
||||
0x5f, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x17, 0x0a, 0x15,
|
||||
0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x73,
|
||||
0x74, 0x61, 0x70, 0x6c, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65,
|
||||
0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f,
|
||||
0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x78,
|
||||
0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x68,
|
||||
0x6f, 0x70, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6b, 0x65,
|
||||
0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65,
|
||||
0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70,
|
||||
0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2f, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d,
|
||||
0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
|
||||
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
@ -182,6 +182,12 @@ message Settings {
|
|||
optional string client_crl_file = 75;
|
||||
optional string google_cloud_serverless_authentication_service_account = 55;
|
||||
optional bool autocert = 56;
|
||||
optional string autocert_ca = 76;
|
||||
optional string autocert_email = 77;
|
||||
optional string autocert_eab_key_id = 78;
|
||||
optional string autocert_eab_mac_key = 79;
|
||||
optional string autocert_trusted_ca = 80;
|
||||
optional string autocert_trusted_ca_file = 81;
|
||||
optional bool autocert_use_staging = 57;
|
||||
optional bool autocert_must_staple = 58;
|
||||
optional string autocert_dir = 59;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue