Skip to content

Commit

Permalink
Add certificate password
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidBoike committed Jan 31, 2025
1 parent b38e3ed commit 71725b3
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class RavenPersistenceConfiguration : IPersistenceConfiguration
public const string ConnectionStringKey = "RavenDB/ConnectionString";
public const string ClientCertificatePathKey = "RavenDB/ClientCertificatePath";
public const string ClientCertificateBase64Key = "RavenDB/ClientCertificateBase64";
public const string ClientCertificatePasswordKey = "RavenDB/ClientCertificatePassword";
public const string DatabaseMaintenancePortKey = "DatabaseMaintenancePort";
public const string ExpirationProcessTimerInSecondsKey = "ExpirationProcessTimerInSeconds";
public const string LogPathKey = "LogPath";
Expand All @@ -28,6 +29,7 @@ public class RavenPersistenceConfiguration : IPersistenceConfiguration
ConnectionStringKey,
ClientCertificatePathKey,
ClientCertificateBase64Key,
ClientCertificatePasswordKey,
DatabaseMaintenancePortKey,
ExpirationProcessTimerInSecondsKey,
LogPathKey,
Expand Down Expand Up @@ -72,6 +74,10 @@ internal static DatabaseConfiguration GetDatabaseConfiguration(PersistenceSettin
{
serverConfiguration.ClientCertificateBase64 = clientCertificateBase64;
}
if (settings.PersisterSpecificSettings.TryGetValue(ClientCertificatePasswordKey, out var clientCertificatePassword))
{
serverConfiguration.ClientCertificatePassword = clientCertificatePassword;
}
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public ServerConfiguration(string dbPath, string serverUrl, string logPath, stri
public string ConnectionString { get; }
public string ClientCertificatePath { get; internal set; }
public string ClientCertificateBase64 { get; internal set; }
public string ClientCertificatePassword { get; internal set; }
public bool UseEmbeddedServer { get; }
public string DbPath { get; internal set; } //Setter for ATT only
public string ServerUrl { get; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ static class RavenBootstrapper
public const string ConnectionStringKey = "RavenDB/ConnectionString";
public const string ClientCertificatePathKey = "RavenDB/ClientCertificatePath";
public const string ClientCertificateBase64Key = "RavenDB/ClientCertificateBase64";
public const string ClientCertificatePasswordKey = "RavenDB/ClientCertificatePassword";
public const string MinimumStorageLeftRequiredForIngestionKey = "MinimumStorageLeftRequiredForIngestion";
public const string DatabaseNameKey = "RavenDB/DatabaseName";
public const string LogsPathKey = "LogPath";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ static T GetRequiredSetting<T>(SettingsRootNamespace settingsRootNamespace, stri
ConnectionString = SettingsReader.Read<string>(settingsRootNamespace, RavenBootstrapper.ConnectionStringKey),
ClientCertificatePath = SettingsReader.Read<string>(settingsRootNamespace, RavenBootstrapper.ClientCertificatePathKey),
ClientCertificateBase64 = SettingsReader.Read<string>(settingsRootNamespace, RavenBootstrapper.ClientCertificateBase64Key),
ClientCertificatePassword = SettingsReader.Read<string>(settingsRootNamespace, RavenBootstrapper.ClientCertificatePasswordKey),
DatabaseName = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.DatabaseNameKey, RavenPersisterSettings.DatabaseNameDefault),
DatabasePath = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.DatabasePathKey, DefaultDatabaseLocation()),
DatabaseMaintenancePort = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.DatabaseMaintenancePortKey, RavenPersisterSettings.DatabaseMaintenancePortDefault),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class RavenPersisterSettings : PersistenceSettings, IRavenClientCertificateInfo
public string ConnectionString { get; set; }
public string ClientCertificatePath { get; set; }
public string ClientCertificateBase64 { get; set; }
public string ClientCertificatePassword { get; set; }
public bool UseEmbeddedServer => string.IsNullOrWhiteSpace(ConnectionString);
public string LogPath { get; set; }
public string LogsMode { get; set; } = LogsModeDefault;
Expand Down
7 changes: 4 additions & 3 deletions src/ServiceControl.RavenDB/RavenClientCertificate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public static class RavenClientCertificate
try
{
var bytes = Convert.FromBase64String(certInfo.ClientCertificateBase64);
return new X509Certificate2(bytes);
return new X509Certificate2(bytes, certInfo.ClientCertificatePassword);
}
catch (Exception x) when (x is FormatException or CryptographicException)
{
Expand All @@ -25,15 +25,15 @@ public static class RavenClientCertificate

if (certInfo.ClientCertificatePath is not null)
{
return new X509Certificate2(certInfo.ClientCertificatePath);
return new X509Certificate2(certInfo.ClientCertificatePath, certInfo.ClientCertificatePassword);
}

var applicationDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location) ?? string.Empty;
var certificatePath = Path.Combine(applicationDirectory, "raven-client-certificate.pfx");

if (File.Exists(certificatePath))
{
return new X509Certificate2(certificatePath);
return new X509Certificate2(certificatePath, certInfo.ClientCertificatePassword);
}
return null;
}
Expand All @@ -43,4 +43,5 @@ public interface IRavenClientCertificateInfo
{
string? ClientCertificatePath { get; }
string? ClientCertificateBase64 { get; }
string? ClientCertificatePassword { get; }
}

0 comments on commit 71725b3

Please sign in to comment.