You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为Windows VPS上的.NET Core Web API配置免费SSL证书

配置.NET Core Web API通过HTTPS访问(仅公网IP场景)

刚好碰到过一模一样的需求,给你整理了一套实操方案,完全适配你只有公网IP、用自包含.NET Core应用的情况:

1. 先拿到支持公网IP的免费SSL证书

大多数免费SSL服务商不支持给纯IP发证书,但ZeroSSL是支持的,这是最优解:

  • 登录ZeroSSL后台创建新证书,类型选「IP Address Certificate」
  • 填入你的VPS公网IP(xxx.xxx.xxx.xxx),然后选验证方式——推荐HTTP验证最简单:
    • ZeroSSL会生成一个验证文件,你把这个文件放到.NET Core应用的wwwroot目录里,确保通过http://xxx.xxx.xxx.xxx/.well-known/pki-validation/[文件名]能直接访问到内容
    • 验证通过后,下载证书包,里面会有三个文件:证书文件(.crt)、私钥(.key)、CA bundle(.ca-bundle)

2. 把证书转成Windows适配的PFX格式

ZeroSSL给的私钥是PEM格式,.NET Core在Windows下用PFX(PKCS#12)格式更顺手,用OpenSSL转一下:

  • 如果VPS没装OpenSSL,先装一个(直接搜Windows版OpenSSL下载就行)
  • 打开命令提示符,切换到证书文件所在目录,执行:
    openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile ca-bundle.crt
    
    执行时会让你设一个密码,一定要记好,后面配置要用

3. 给你的.NET Core应用配置HTTPS

有两种方式,选你顺手的来:

方式一:改配置文件(一劳永逸)

打开应用发布目录里的appsettings.json,添加Kestrel的HTTPS端点配置:

"Kestrel": {
  "Endpoints": {
    "Https": {
      "Url": "https://xxx.xxx.xxx.xxx:443",
      "Certificate": {
        "Path": "certificate.pfx",
        "Password": "你刚才设的PFX密码"
      }
    }
  }
}

把转换好的certificate.pfx放到和.exe同目录下就行。

方式二:启动时用命令行参数

不想改配置文件的话,直接在启动.exe时指定:

YourAppName.exe --urls "https://xxx.xxx.xxx.xxx:443" --certificate-path "certificate.pfx" --certificate-password "你的PFX密码"

4. 别忘开Windows防火墙的443端口

这步很容易忘!如果防火墙没放行,外面根本访问不了:

  • 打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」
  • 选「端口」,下一步输入443,协议选TCP,允许连接,应用到所有网络类型,最后给规则起个名字比如「HTTPS API访问」

5. 验证效果

启动你的.NET Core应用,然后在浏览器里访问https://xxx.xxx.xxx.xxx:443/api/values,正常情况下浏览器地址栏会显示安全锁,不会再弹不安全的提示了。

额外提醒

  • 如果你的VPS之前装了IIS,要确保IIS没占用443端口(可以停掉IIS或者改它的端口),不然你的应用启动会失败
  • 免费IP证书有效期一般是90天,到期前记得去ZeroSSL重新申请更新
  • 如果ZeroSSL的IP证书申请有问题,也可以试试SSL.com的免费IP证书,流程差不多

内容的提问来源于stack exchange,提问作者Sri

火山引擎 最新活动