@@ -78,7 +78,7 @@ enum CliCommand {
7878 /// The path to a PEM encoded private key
7979 #[ arg( long, env = "TLS_PRIVATE_KEY_PATH" ) ]
8080 tls_private_key_path : PathBuf ,
81- /// The path to a PEM encoded certificate chain
81+ /// Additional CA certificate to verify against ( PEM) Defaults to no additional TLS certs.
8282 #[ arg( long, env = "TLS_CERTIFICATE_PATH" ) ]
8383 tls_certificate_path : PathBuf ,
8484 /// Whether to use client authentication. If the client is running in a CVM this must be
@@ -99,6 +99,9 @@ enum CliCommand {
9999 GetTlsCert {
100100 /// The hostname:port or ip:port of the proxy server (port defaults to 443)
101101 server : String ,
102+ /// Additional CA certificate to verify against (PEM) Defaults to no additional TLS certs.
103+ #[ arg( long) ]
104+ tls_ca_certificate : Option < PathBuf > ,
102105 } ,
103106 /// Serve a filesystem path over an attested channel
104107 AttestedFileServer {
@@ -114,7 +117,7 @@ enum CliCommand {
114117 /// The path to a PEM encoded private key
115118 #[ arg( long, env = "TLS_PRIVATE_KEY_PATH" ) ]
116119 tls_private_key_path : PathBuf ,
117- /// The path to a PEM encoded certificate chain
120+ /// Additional CA certificate to verify against ( PEM) Defaults to no additional TLS certs.
118121 #[ arg( long, env = "TLS_CERTIFICATE_PATH" ) ]
119122 tls_certificate_path : PathBuf ,
120123 /// URL of the remote dummy attestation service. Only use with --server-attestation-type
@@ -145,7 +148,7 @@ async fn main() -> anyhow::Result<()> {
145148 "Exactly one of --measurements-file or --allowed-remote-attestation-type must be provided"
146149 ) ;
147150
148- let crate_name = env ! ( "CARGO_PKG_NAME " ) ;
151+ let crate_name = env ! ( "CARGO_CRATE_NAME " ) ;
149152
150153 let env_filter = tracing_subscriber:: EnvFilter :: builder ( )
151154 . with_default_directive ( LevelFilter :: WARN . into ( ) ) // global default
@@ -281,8 +284,20 @@ async fn main() -> anyhow::Result<()> {
281284 }
282285 }
283286 }
284- CliCommand :: GetTlsCert { server } => {
285- let cert_chain = get_tls_cert ( server, attestation_verifier) . await ?;
287+ CliCommand :: GetTlsCert {
288+ server,
289+ tls_ca_certificate,
290+ } => {
291+ let remote_tls_cert = match tls_ca_certificate {
292+ Some ( remote_cert_filename) => Some (
293+ load_certs_pem ( remote_cert_filename) ?
294+ . first ( )
295+ . ok_or ( anyhow ! ( "Filename given but no ceritificates found" ) ) ?
296+ . clone ( ) ,
297+ ) ,
298+ None => None ,
299+ } ;
300+ let cert_chain = get_tls_cert ( server, attestation_verifier, remote_tls_cert) . await ?;
286301 println ! ( "{}" , certs_to_pem_string( & cert_chain) ?) ;
287302 }
288303 CliCommand :: AttestedFileServer {
0 commit comments