Ejemplo n.º 1
0
        /// <summary>
        /// 嘗試存取現有憑證,如過期則重新取得憑證
        /// </summary>
        /// <param name="options">Kestrel伺服器監聽選項實例</param>
        /// <param name="savePassword">憑證儲存密碼</param>
        /// <param name="email">電子郵件</param>
        /// <param name="domains">網域</param>
        /// <returns>可等侯程序</returns>
        private static async Task UseLetsEncryptAsyncBase(this ListenOptions options, string savePassword, string email, params string[] domains)
        {
            if (File.Exists(CertificatePath))
            {
                var cert = new X509Certificate2(CertificatePath, savePassword);
                if (cert.NotAfter > DateTime.UtcNow)
                {
                    options.UseHttps(CertificatePath, savePassword);
                    cert.Dispose();
                    return;
                }
                else
                {
                    cert.Dispose();
                }
            }
            var pfxBinary = await options.CreateX509BinaryByLetsEncryptAsync(savePassword, email, domains);

            if (savePassword == null)
            {
                options.UseHttps(new X509Certificate2(pfxBinary));
            }
            else
            {
                File.WriteAllBytes(CertificatePath, pfxBinary);
                options.UseHttps(CertificatePath, savePassword);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 使用Let's Encrypt服務產生X509憑證
 /// </summary>
 /// <param name="options">Kestrel伺服器監聽選項實例</param>
 /// <param name="savePassword">憑證儲存密碼</param>
 /// <param name="email">電子郵件</param>
 /// <param name="domains">網域</param>
 /// <returns>X509憑證二進制原始資料</returns>
 public static byte[] CreateX509BinaryByLetsEncrypt(this ListenOptions options, string savePassword, string email, params string[] domains)
 {
     return(options.CreateX509BinaryByLetsEncryptAsync(savePassword, email, domains).GetAwaiter().GetResult());
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 使用Let's Encrypt服務產生X509憑證
 /// </summary>
 /// <param name="options">Kestrel伺服器監聽選項實例</param>
 /// <param name="savePassword">憑證儲存密碼</param>
 /// <param name="email">電子郵件</param>
 /// <param name="domains">網域</param>
 /// <returns>可等候程序之X509憑證</returns>
 public static async Task <X509Certificate2> CreateX509ByLetsEncryptAsync(this ListenOptions options, string savePassword, string email, params string[] domains)
 {
     return(new X509Certificate2(await options.CreateX509BinaryByLetsEncryptAsync(savePassword, email, domains), savePassword));
 }