如何向.NET 6.0 API项目添加.crt证书并启用HTTPS
.NET 6.0 API 配置CRT证书启用HTTPS实操方案
3个.crt格式证书按以下步骤操作即可完成转换和配置,全程不需要安装付费第三方工具。
前置说明
你拿到的3个.crt文件为标准SSL证书链文件,按常规命名规则分别对应:
- 服务器实体证书:绑定你域名的公钥证书,文件名一般包含你的域名或
server字段 - 中间CA证书:证书链中间节点证书,文件名一般带
intermediate/CA字段 - 根CA证书:信任根证书,文件名一般带
root字段
重要提示:生成.pfx格式证书必须持有对应服务器证书的私钥文件(一般为.key后缀,证书签发时会和.crt文件一同交付,私钥丢失请联系证书签发方重新补发,无有效私钥无法完成转换)
步骤1:合并完整证书链
为了避免客户端访问时出现证书不信任错误,需要先把3个.crt文件按顺序合并为全链证书文件,顺序不能颠倒:
- 先放服务器实体证书的完整内容
- 再放中间CA证书的完整内容
- 最后放根CA证书的完整内容
- Windows环境:直接用记事本依次复制粘贴三个文件的内容,保存为
fullchain.crt即可 - Linux/macOS环境:直接执行命令合并:
cat 你的域名证书.crt 中间CA证书.crt 根CA证书.crt > fullchain.crt
步骤2:CRT转PFX格式
用系统自带的OpenSSL工具即可完成转换,目前Windows 10 1809+、主流Linux发行版、macOS均默认预装OpenSSL:
- 打开终端/命令提示符,进入证书文件存放目录
- 执行转换命令:
openssl pkcs12 -export -out domain.pfx -inkey 你的证书私钥.key -in fullchain.crt
- 按提示设置.pfx证书的导出密码,务必牢记,后续项目配置需要用到
参数说明:
-out domain.pfx:指定输出的pfx文件路径和名称,可自定义-inkey:后面对应你自己的证书私钥文件路径-in:后面对应上一步合并好的全链证书文件路径
如果执行openssl提示命令不存在,Windows安装过Git的用户可以直接打开Git Bash执行上述命令,无需额外安装OpenSSL。
步骤3:.NET 6.0 项目配置HTTPS
分开发环境和生产环境两种场景配置:
开发环境配置
打开项目下Properties/launchSettings.json文件,在你使用的启动配置节点下添加证书配置:
{ "profiles": { "你的API项目名": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "sslCert": { "path": "C:\\certs\\domain.pfx", "password": "你之前设置的pfx导出密码" } } } }
生产环境配置
打开生产环境对应的配置文件appsettings.Production.json,添加Kestrel服务的端点配置:
{ "Kestrel": { "Endpoints": { "Http": { "Url": "http://*:80" }, "Https": { "Url": "https://*:443", "Certificate": { "Path": "/opt/certs/domain.pfx", "Password": "你之前设置的pfx导出密码" } } } } }
注意:生产环境不要将pfx密码明文写在配置文件中,建议通过环境变量、专业密钥管理服务存储敏感配置;Linux环境下要确保运行API进程的账号对pfx文件有读取权限。
常见问题排查
- 转换时报错无法加载私钥:检查私钥路径是否正确、私钥是否和当前证书匹配、私钥文件是否损坏
- 项目启动提示找不到证书:检查pfx文件路径配置是否正确、进程运行账号是否有文件读取权限
- 浏览器访问提示证书链不完整:检查合并证书链时顺序是否正确、是否漏加中间CA或根CA证书
内容的提问来源于stack exchange,提问作者Algrandeth
相关产品推荐
相关产品推荐

