@@ -26,7 +26,7 @@ use Test::Nginx::DNS;
2626select STDERR ; $| = 1;
2727select STDOUT ; $| = 1;
2828
29- my $t = Test::Nginx-> new()-> has(qw/ http http_ssl socket_ssl / )
29+ my $t = Test::Nginx-> new()-> has(qw/ http http_ssl sni socket_ssl_sni / )
3030 -> has_daemon(' openssl' );
3131
3232$t -> write_file_expand(' nginx.conf' , <<'EOF' );
@@ -43,11 +43,20 @@ http {
4343
4444 resolver 127.0.0.1:%%PORT_8980_UDP%%;
4545
46- acme_issuer default {
46+ acme_issuer eab-data {
4747 uri https://acme.test:%%PORT_9000%%/dir;
48- external_account_key eab-kid eab-secret;
48+ external_account_key eab-data
49+ data:0Xl6zTksEz1MqVDw5dn680nma9vYwJoI30LjRdbrDSjTfRxtcX_6YOAYzVDImRQV;
4950 ssl_trusted_certificate acme.test.crt;
50- state_path %%TESTDIR%%;
51+ state_path %%TESTDIR%%/eab-data;
52+ accept_terms_of_service;
53+ }
54+
55+ acme_issuer eab-file {
56+ uri https://acme.test:%%PORT_9000%%/dir;
57+ external_account_key eab-file eab-secret;
58+ ssl_trusted_certificate acme.test.crt;
59+ state_path %%TESTDIR%%/eab-file;
5160 accept_terms_of_service;
5261 }
5362
@@ -58,9 +67,19 @@ http {
5867
5968 server {
6069 listen 127.0.0.1:8443 ssl;
61- server_name example.test;
70+ server_name data.example.test;
71+
72+ acme_certificate eab-data;
73+
74+ ssl_certificate $acme_certificate;
75+ ssl_certificate_key $acme_certificate_key;
76+ }
77+
78+ server {
79+ listen 127.0.0.1:8443 ssl;
80+ server_name file.example.test;
6281
63- acme_certificate default ;
82+ acme_certificate eab-file ;
6483
6584 ssl_certificate $acme_certificate;
6685 ssl_certificate_key $acme_certificate_key;
@@ -90,7 +109,8 @@ foreach my $name ('acme.test') {
90109my $dp = port(8980, udp => 1);
91110my @dc = (
92111 { name => ' acme.test' , A => ' 127.0.0.1' },
93- { name => ' example.test' , A => ' 127.0.0.1' }
112+ { name => ' data.example.test' , A => ' 127.0.0.1' },
113+ { name => ' file.example.test' , A => ' 127.0.0.1' }
94114);
95115
96116my $eab_secret = gen_hmac_secret(48);
@@ -99,11 +119,15 @@ my $acme = Test::Nginx::ACME->new($t, port(9000), port(9001),
99119 $t -> testdir . ' /acme.test.crt' ,
100120 $t -> testdir . ' /acme.test.key' ,
101121 http_port => port(8080),
102- tls_port => port(8443),
103122 dns_port => $dp ,
104123 conf => {
105124 externalAccountBindingRequired => \1,
106- externalAccountMACKeys => { ' eab-kid' => $eab_secret },
125+ externalAccountMACKeys => {
126+ ' eab-data' =>
127+ ' 0Xl6zTksEz1MqVDw5dn680nma9vYwJoI3'
128+ . ' 0LjRdbrDSjTfRxtcX_6YOAYzVDImRQV' ,
129+ ' eab-file' => $eab_secret
130+ },
107131 }
108132)-> has(qw/ eab/ );
109133
@@ -116,13 +140,15 @@ $t->write_file('acme-root.crt', $acme->trusted_ca());
116140$t -> write_file(' eab-secret' , $eab_secret );
117141
118142$t -> write_file(' index.html' , ' SUCCESS' );
119- $t -> plan(1 )-> run();
143+ $t -> plan(2 )-> run();
120144
121145# ##############################################################################
122146
123- $acme -> wait_certificate(' example.test' ) or die " no certificate" ;
147+ $acme -> wait_certificate(' eab-data/data.example.test' ) or die " no certificate" ;
148+ $acme -> wait_certificate(' eab-file/file.example.test' ) or die " no certificate" ;
124149
125- like(get(8443, ' example.test' , ' acme-root' ), qr / SUCCESS/ , ' tls request' );
150+ like(get(8443, ' data.example.test' , ' acme-root' ), qr / SUCCESS/ , ' inline key' );
151+ like(get(8443, ' file.example.test' , ' acme-root' ), qr / SUCCESS/ , ' key file' );
126152
127153# ##############################################################################
128154
@@ -135,6 +161,7 @@ sub get {
135161 http_get(' /' ,
136162 PeerAddr => ' 127.0.0.1:' . port($port ),
137163 SSL => 1,
164+ SSL_hostname => $host ,
138165 $ca ? (
139166 SSL_ca_file => " $d /$ca .crt" ,
140167 SSL_verifycn_name => $host ,
0 commit comments