Skip to content

Commit 39a7b15

Browse files
authored
Check tls certs exist for grpc management serve (#637)
* feat: Add TLS directory existence check before starting RPC server * feat: Add file existence checks with detailed error logging for TLS files * chore: fmt
1 parent 22beade commit 39a7b15

File tree

3 files changed

+49
-4
lines changed

3 files changed

+49
-4
lines changed

crates/cdk-mint-rpc/src/proto/server.rs

+43-3
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,49 @@ impl MintRPCServer {
6363
let server = match tls_dir {
6464
Some(tls_dir) => {
6565
tracing::info!("TLS configuration found, starting secure server");
66-
let cert = std::fs::read_to_string(tls_dir.join("server.pem"))?;
67-
let key = std::fs::read_to_string(tls_dir.join("server.key"))?;
68-
let client_ca_cert = std::fs::read_to_string(tls_dir.join("ca.pem"))?;
66+
let server_pem_path = tls_dir.join("server.pem");
67+
let server_key_path = tls_dir.join("server.key");
68+
let ca_pem_path = tls_dir.join("ca.pem");
69+
70+
if !server_pem_path.exists() {
71+
tracing::error!(
72+
"Server certificate file does not exist: {}",
73+
server_pem_path.display()
74+
);
75+
return Err(Error::Io(std::io::Error::new(
76+
std::io::ErrorKind::NotFound,
77+
format!(
78+
"Server certificate file not found: {}",
79+
server_pem_path.display()
80+
),
81+
)));
82+
}
83+
84+
if !server_key_path.exists() {
85+
tracing::error!(
86+
"Server key file does not exist: {}",
87+
server_key_path.display()
88+
);
89+
return Err(Error::Io(std::io::Error::new(
90+
std::io::ErrorKind::NotFound,
91+
format!("Server key file not found: {}", server_key_path.display()),
92+
)));
93+
}
94+
95+
if !ca_pem_path.exists() {
96+
tracing::error!(
97+
"CA certificate file does not exist: {}",
98+
ca_pem_path.display()
99+
);
100+
return Err(Error::Io(std::io::Error::new(
101+
std::io::ErrorKind::NotFound,
102+
format!("CA certificate file not found: {}", ca_pem_path.display()),
103+
)));
104+
}
105+
106+
let cert = std::fs::read_to_string(&server_pem_path)?;
107+
let key = std::fs::read_to_string(&server_key_path)?;
108+
let client_ca_cert = std::fs::read_to_string(&ca_pem_path)?;
69109
let client_ca_cert = Certificate::from_pem(client_ca_cert);
70110
let server_identity = Identity::from_pem(cert, key);
71111
let tls_config = ServerTlsConfig::new()

crates/cdk-mintd/example.config.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ mnemonic = ""
77
# enable_swagger_ui = false
88

99
[mint_management_rpc]
10-
enabled = true
10+
# enabled = false
1111
# address = "127.0.0.1"
1212
# port = 8086
1313

crates/cdk-mintd/src/main.rs

+5
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,11 @@ async fn main() -> anyhow::Result<()> {
354354

355355
let tls_dir = rpc_settings.tls_dir_path.unwrap_or(work_dir.join("tls"));
356356

357+
if !tls_dir.exists() {
358+
tracing::error!("TLS directory does not exist: {}", tls_dir.display());
359+
bail!("Cannot start RPC server: TLS directory does not exist");
360+
}
361+
357362
mint_rpc.start(Some(tls_dir)).await?;
358363

359364
rpc_server = Some(mint_rpc);

0 commit comments

Comments
 (0)