如何查看站点在IIS上是否运行带有https证书

本文关键字:行带 运行 https 证书 是否 何查看 站点 IIS | 更新日期: 2023-09-27 18:09:04

假设我有两台服务器。一个使用https证书运行,另一个没有。访问我的网站的用户输入http。如果网站指向服务器的https证书,那么我想重定向用户/重写url。

只剩下一件事。如何检查我的网站是否获得了证书?或者绑定是https?

void Application_BeginRequest(object sender, EventArgs e)
{
    var path = HttpContext.Current.Request.Url.AbsolutePath;
    var variableToSeeIfIISSiteRunningOnCertificate = true;
    if (variableToSeeIfIISSiteRunningOnCertificate && !HttpContext.Current.Request.IsSecureConnection && !string.IsNullOrEmpty(path) && path.ToLower().Contains("loginpage.aspx"))
    {
        HttpContext.Current.Response.Redirect(HttpContext.Current.Request.Url.AbsoluteUri.Replace("http://", "https://"));
    }
}

如何查看站点在IIS上是否运行带有https证书

using System.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
public bool HasValidCertificate(url){
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    response.Close();
    X509Certificate cert = request.ServicePoint.Certificate;
    X509Certificate2 cert2 = new X509Certificate2(cert);
    string cn = cert2.GetIssuerName();
    string cedate = cert2.GetExpirationDateString();
    string cpub = cert2.GetPublicKeyString();
    return !string.IsNullOrEmpty(cn) && cedate > DateTime.Now && !string.IsNullOrEmpty(cpub);
}

没有经过测试,但应该给一些关于如何做到这一点的见解