mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-15 13:36:37 +00:00
fix #4497: acme: add support for external account bindings
Signed-off-by: Folke Gleumes <f.gleumes@proxmox.com> Reviewed-by: Fabian.Grünbichler <f.gruenbichler@proxmox.com> Tested-by: Fabian.Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
parent
ed38c56b2b
commit
fe64969b63
@ -115,6 +115,18 @@ __PACKAGE__->register_method ({
|
|||||||
default => $acme_default_directory_url,
|
default => $acme_default_directory_url,
|
||||||
optional => 1,
|
optional => 1,
|
||||||
}),
|
}),
|
||||||
|
'eab-kid' => {
|
||||||
|
type => 'string',
|
||||||
|
description => 'Key Identifier for External Account Binding.',
|
||||||
|
requires => 'eab-hmac-key',
|
||||||
|
optional => 1,
|
||||||
|
},
|
||||||
|
'eab-hmac-key' => {
|
||||||
|
type => 'string',
|
||||||
|
description => 'HMAC key for External Account Binding.',
|
||||||
|
requires => 'eab-kid',
|
||||||
|
optional => 1,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
returns => {
|
returns => {
|
||||||
@ -130,6 +142,9 @@ __PACKAGE__->register_method ({
|
|||||||
my $account_file = "${acme_account_dir}/${account_name}";
|
my $account_file = "${acme_account_dir}/${account_name}";
|
||||||
mkdir $acme_account_dir if ! -e $acme_account_dir;
|
mkdir $acme_account_dir if ! -e $acme_account_dir;
|
||||||
|
|
||||||
|
my $eab_kid = extract_param($param, 'eab-kid');
|
||||||
|
my $eab_hmac_key = extract_param($param, 'eab-hmac-key');
|
||||||
|
|
||||||
raise_param_exc({'name' => "ACME account config file '${account_name}' already exists."})
|
raise_param_exc({'name' => "ACME account config file '${account_name}' already exists."})
|
||||||
if -e $account_file;
|
if -e $account_file;
|
||||||
|
|
||||||
@ -145,7 +160,17 @@ __PACKAGE__->register_method ({
|
|||||||
print "Generating ACME account key..\n";
|
print "Generating ACME account key..\n";
|
||||||
$acme->init(4096);
|
$acme->init(4096);
|
||||||
print "Registering ACME account..\n";
|
print "Registering ACME account..\n";
|
||||||
eval { $acme->new_account($param->{tos_url}, contact => $contact); };
|
|
||||||
|
my %info = (contact => $contact);
|
||||||
|
if (defined($eab_kid)) {
|
||||||
|
$info{eab} = {
|
||||||
|
kid => $eab_kid,
|
||||||
|
hmac_key => $eab_hmac_key
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
eval { $acme->new_account($param->{tos_url}, %info); };
|
||||||
|
|
||||||
if (my $err = $@) {
|
if (my $err = $@) {
|
||||||
unlink $account_file;
|
unlink $account_file;
|
||||||
die "Registration failed: $err\n";
|
die "Registration failed: $err\n";
|
||||||
|
Loading…
Reference in New Issue
Block a user