Skip to content

Commit 71725b3

Browse files
committed
Add certificate password
1 parent b38e3ed commit 71725b3

File tree

6 files changed

+14
-3
lines changed

6 files changed

+14
-3
lines changed

src/ServiceControl.Audit.Persistence.RavenDB/RavenPersistenceConfiguration.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class RavenPersistenceConfiguration : IPersistenceConfiguration
1414
public const string ConnectionStringKey = "RavenDB/ConnectionString";
1515
public const string ClientCertificatePathKey = "RavenDB/ClientCertificatePath";
1616
public const string ClientCertificateBase64Key = "RavenDB/ClientCertificateBase64";
17+
public const string ClientCertificatePasswordKey = "RavenDB/ClientCertificatePassword";
1718
public const string DatabaseMaintenancePortKey = "DatabaseMaintenancePort";
1819
public const string ExpirationProcessTimerInSecondsKey = "ExpirationProcessTimerInSeconds";
1920
public const string LogPathKey = "LogPath";
@@ -28,6 +29,7 @@ public class RavenPersistenceConfiguration : IPersistenceConfiguration
2829
ConnectionStringKey,
2930
ClientCertificatePathKey,
3031
ClientCertificateBase64Key,
32+
ClientCertificatePasswordKey,
3133
DatabaseMaintenancePortKey,
3234
ExpirationProcessTimerInSecondsKey,
3335
LogPathKey,
@@ -72,6 +74,10 @@ internal static DatabaseConfiguration GetDatabaseConfiguration(PersistenceSettin
7274
{
7375
serverConfiguration.ClientCertificateBase64 = clientCertificateBase64;
7476
}
77+
if (settings.PersisterSpecificSettings.TryGetValue(ClientCertificatePasswordKey, out var clientCertificatePassword))
78+
{
79+
serverConfiguration.ClientCertificatePassword = clientCertificatePassword;
80+
}
7581
}
7682
else
7783
{

src/ServiceControl.Audit.Persistence.RavenDB/ServerConfiguration.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public ServerConfiguration(string dbPath, string serverUrl, string logPath, stri
2222
public string ConnectionString { get; }
2323
public string ClientCertificatePath { get; internal set; }
2424
public string ClientCertificateBase64 { get; internal set; }
25+
public string ClientCertificatePassword { get; internal set; }
2526
public bool UseEmbeddedServer { get; }
2627
public string DbPath { get; internal set; } //Setter for ATT only
2728
public string ServerUrl { get; }

src/ServiceControl.Persistence.RavenDB/RavenBootstrapper.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ static class RavenBootstrapper
99
public const string ConnectionStringKey = "RavenDB/ConnectionString";
1010
public const string ClientCertificatePathKey = "RavenDB/ClientCertificatePath";
1111
public const string ClientCertificateBase64Key = "RavenDB/ClientCertificateBase64";
12+
public const string ClientCertificatePasswordKey = "RavenDB/ClientCertificatePassword";
1213
public const string MinimumStorageLeftRequiredForIngestionKey = "MinimumStorageLeftRequiredForIngestion";
1314
public const string DatabaseNameKey = "RavenDB/DatabaseName";
1415
public const string LogsPathKey = "LogPath";

src/ServiceControl.Persistence.RavenDB/RavenPersistenceConfiguration.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ static T GetRequiredSetting<T>(SettingsRootNamespace settingsRootNamespace, stri
3636
ConnectionString = SettingsReader.Read<string>(settingsRootNamespace, RavenBootstrapper.ConnectionStringKey),
3737
ClientCertificatePath = SettingsReader.Read<string>(settingsRootNamespace, RavenBootstrapper.ClientCertificatePathKey),
3838
ClientCertificateBase64 = SettingsReader.Read<string>(settingsRootNamespace, RavenBootstrapper.ClientCertificateBase64Key),
39+
ClientCertificatePassword = SettingsReader.Read<string>(settingsRootNamespace, RavenBootstrapper.ClientCertificatePasswordKey),
3940
DatabaseName = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.DatabaseNameKey, RavenPersisterSettings.DatabaseNameDefault),
4041
DatabasePath = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.DatabasePathKey, DefaultDatabaseLocation()),
4142
DatabaseMaintenancePort = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.DatabaseMaintenancePortKey, RavenPersisterSettings.DatabaseMaintenancePortDefault),

src/ServiceControl.Persistence.RavenDB/RavenPersisterSettings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class RavenPersisterSettings : PersistenceSettings, IRavenClientCertificateInfo
2626
public string ConnectionString { get; set; }
2727
public string ClientCertificatePath { get; set; }
2828
public string ClientCertificateBase64 { get; set; }
29+
public string ClientCertificatePassword { get; set; }
2930
public bool UseEmbeddedServer => string.IsNullOrWhiteSpace(ConnectionString);
3031
public string LogPath { get; set; }
3132
public string LogsMode { get; set; } = LogsModeDefault;

src/ServiceControl.RavenDB/RavenClientCertificate.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public static class RavenClientCertificate
1515
try
1616
{
1717
var bytes = Convert.FromBase64String(certInfo.ClientCertificateBase64);
18-
return new X509Certificate2(bytes);
18+
return new X509Certificate2(bytes, certInfo.ClientCertificatePassword);
1919
}
2020
catch (Exception x) when (x is FormatException or CryptographicException)
2121
{
@@ -25,15 +25,15 @@ public static class RavenClientCertificate
2525

2626
if (certInfo.ClientCertificatePath is not null)
2727
{
28-
return new X509Certificate2(certInfo.ClientCertificatePath);
28+
return new X509Certificate2(certInfo.ClientCertificatePath, certInfo.ClientCertificatePassword);
2929
}
3030

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

3434
if (File.Exists(certificatePath))
3535
{
36-
return new X509Certificate2(certificatePath);
36+
return new X509Certificate2(certificatePath, certInfo.ClientCertificatePassword);
3737
}
3838
return null;
3939
}
@@ -43,4 +43,5 @@ public interface IRavenClientCertificateInfo
4343
{
4444
string? ClientCertificatePath { get; }
4545
string? ClientCertificateBase64 { get; }
46+
string? ClientCertificatePassword { get; }
4647
}

0 commit comments

Comments
 (0)