Posted in

本地域名开启https并让浏览器不报证书错误

在IIS上部署的本地站点,由于需要调用公司内部的其他服务,所以需要用到域名。但是直接在iis申请的证书,在Chrome等新版浏览器中会报错:“您的连接不是私密连接”。

如何消除这个错误呢?

一般情况下,我们可以在下面错误页空白处输入:thisisunsafe,然后页面就会自动跳转到你的本地站点,但是依然会显示不安全,这样的设置只是临时跳过验证,告诉浏览器你知道这个方法不安全,而且过一段时间就会需要重新来一次。有没有永久的方案呢?

为本地域名(如 dev.jst.com)生成自签名 SSL 证书并导入到受信任的根证书颁发机构,以在 IIS 上配置 HTTPS 并避免浏览器报错(如 NET::ERR_CERT_INVALID),是一个常见需求。以下是详细步骤,针对你的技术背景(.NET、ReactJS、VueJS 和 Umami 经验),使用 PowerShell(Windows 原生工具)生成证书并导入,确保浏览器信任,约 500 字。

步骤:生成并导入本地证书

  1. 生成自签名证书
    使用 PowerShell 的 New-SelfSignedCertificate 命令生成自签名证书,适用于 IIS 和本地域名 dev.jst.com:
    • 打开 PowerShell(以管理员身份)。
    • 运行以下命令:
    • powershellCopyNew-SelfSignedCertificate -DnsName "dev.jst.com", "localhost", "127.0.0.1" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(2) -FriendlyName "DevJstCert" -KeyUsage DigitalSignature,KeyEncipherment -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1")
    • 说明
      • -DnsName:包含 dev.jst.com、 localhost 和 127.0.0.1,确保证书支持多种访问方式。
      • -NotAfter:设置有效期 2 年。
      • -FriendlyName:便于在 IIS 中识别。
      • -KeyUsage 和 -TextExtension:确保证书支持服务器身份验证。
    • 输出:证书存储在“本地计算机” > “个人” > “证书”,记录返回的指纹(Thumbprint,例如 A1B2C3D4…)。
  2. 导出证书供信任
    • 打开证书管理器:运行 certmgr.msc 或通过 PowerShell: powershellCopy$cert = Get-ChildItem -Path cert:\LocalMachine\My | Where-Object { $_.Subject -eq "CN=dev.jst.com" } Export-Certificate -Cert $cert -FilePath "C:\dev-jst.cer" -Type CERT
    • 说明
      • 导出不含私钥的 .cer 文件,格式为 DER encoded binary X.509。
      • 文件保存到 C:\dev-jst.cer(可自定义路径)。
  3. 导入证书到受信任根证书颁发机构
    • 通过 PowerShell 导入: powershellCopyImport-Certificate -FilePath "C:\dev-jst.cer" -CertStoreLocation cert:\LocalMachine\Root
    • 或者手动导入:
      • 运行 certmgr.msc,导航到“受信任的根证书颁发机构” > “证书”。
      • 右键 > 所有任务 > 导入,选择 C:\dev-jst.cer。
      • 放置在“受信任的根证书颁发机构”存储,完成导入。
    • 验证:在“受信任的根证书颁发机构”中双击证书,确认“常规”选项卡显示“此证书没有问题”。
  4. 配置 IIS 绑定证书
    • 打开 IIS 管理器(inetmgr)。
    • 添加或选择网站:
      • 如果无网站,右键“网站” > 添加网站:
        • 名称:DevJst
        • 物理路径:你的 .NET 项目目录(如 C:\inetpub\wwwroot\jst)
        • 主机名:dev.jst.com
        • 端口:443(HTTPS)
    • 配置绑定:
      • 选择网站 > “绑定” > 添加或编辑:
        • 类型:https
        • 主机名:dev.jst.com
        • 端口:443
        • 证书:选择 DevJstCert(友好名称或指纹)。
    • 重启 IIS: powershellCopyiisreset
  5. 配置本地域名
    • 编辑主机文件:
      • 路径:C:\Windows\System32\drivers\etc\hosts
      • 添加: textCopy127.0.0.1 dev.jst.com ::1 dev.jst.com
      • 保存后,清除 DNS 缓存: powershellCopyipconfig /flushdns
      • 验证:ping dev.jst.com 返回 127.0.0.1。

完全消除SSL错误

最后就能没有错误提示了,可以自由的玩耍了!

FAQ

如果还是遇到net::ERR_CERT_INVALID的错误,请仔细检查你手工生成的证书的-DnsName为你本地域名。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注