@@ -11,33 +11,6 @@ public static class SslCertificateManager
1111{
1212 private static string UserSecretsId => Assembly . GetEntryAssembly ( ) ! . GetCustomAttribute < UserSecretsIdAttribute > ( ) ! . UserSecretsId ;
1313
14- public static async Task < string > CreateSslCertificateIfNotExists ( this IDistributedApplicationBuilder builder , CancellationToken cancellationToken = default )
15- {
16- var config = new ConfigurationBuilder ( ) . AddUserSecrets ( UserSecretsId ) . Build ( ) ;
17-
18- const string certificatePasswordKey = "certificate-password" ;
19- var certificatePassword = config [ certificatePasswordKey ]
20- ?? await builder . CreateStablePassword ( certificatePasswordKey ) . Resource . GetValueAsync ( cancellationToken )
21- ?? throw new InvalidOperationException ( "Failed to retrieve or create certificate password." ) ;
22-
23- var certificateLocation = GetCertificateLocation ( "localhost" ) ;
24- try
25- {
26- var certificate2 = X509CertificateLoader . LoadPkcs12FromFile ( certificateLocation , certificatePassword ) ;
27- if ( certificate2 . NotAfter < DateTime . UtcNow )
28- {
29- Console . WriteLine ( $ "Certificate { certificateLocation } is expired. Creating a new certificate.") ;
30- CreateNewSelfSignedDeveloperCertificate ( certificateLocation , certificatePassword ) ;
31- }
32- }
33- catch ( CryptographicException )
34- {
35- CreateNewSelfSignedDeveloperCertificate ( certificateLocation , certificatePassword ) ;
36- }
37-
38- return certificatePassword ;
39- }
40-
4114 private static string GetCertificateLocation ( string domain )
4215 {
4316 var userFolder = Environment . GetFolderPath ( Environment . SpecialFolder . UserProfile ) ;
@@ -73,4 +46,34 @@ private static void CreateNewSelfSignedDeveloperCertificate(string certificateLo
7346 }
7447 ) ! . WaitForExit ( ) ;
7548 }
49+
50+ extension ( IDistributedApplicationBuilder builder )
51+ {
52+ public async Task < string > CreateSslCertificateIfNotExists ( CancellationToken cancellationToken = default )
53+ {
54+ var config = new ConfigurationBuilder ( ) . AddUserSecrets ( UserSecretsId ) . Build ( ) ;
55+
56+ const string certificatePasswordKey = "certificate-password" ;
57+ var certificatePassword = config [ certificatePasswordKey ]
58+ ?? await builder . CreateStablePassword ( certificatePasswordKey ) . Resource . GetValueAsync ( cancellationToken )
59+ ?? throw new InvalidOperationException ( "Failed to retrieve or create certificate password." ) ;
60+
61+ var certificateLocation = GetCertificateLocation ( "localhost" ) ;
62+ try
63+ {
64+ var certificate2 = X509CertificateLoader . LoadPkcs12FromFile ( certificateLocation , certificatePassword ) ;
65+ if ( certificate2 . NotAfter < DateTime . UtcNow )
66+ {
67+ Console . WriteLine ( $ "Certificate { certificateLocation } is expired. Creating a new certificate.") ;
68+ CreateNewSelfSignedDeveloperCertificate ( certificateLocation , certificatePassword ) ;
69+ }
70+ }
71+ catch ( CryptographicException )
72+ {
73+ CreateNewSelfSignedDeveloperCertificate ( certificateLocation , certificatePassword ) ;
74+ }
75+
76+ return certificatePassword ;
77+ }
78+ }
7679}
0 commit comments