必须通过certlm.msc将自签名根证书导入“受信任的根证书颁发机构”存储,否则浏览器因无法验证证书链而报net::err_cert_authority_invalid;具体需先用new-selfsignedcertificate生成根ca并导出.cer,再以管理员身份运行certlm.msc完成精准导入。

要在Windows 11本地开发环境中让网站通过HTTPS访问且不被浏览器拦截,必须让系统信任你签发的证书——而系统自带的证书管理器(certlm.msc)正是完成根证书安装与信任的关键入口,它不依赖第三方工具,也不需要命令行编译,但每一步都必须精准对应证书存储位置和权限层级。
生成自签名根证书并导出为.cer文件
以管理员身份运行PowerShell,执行以下命令创建一个仅用于本地开发的根CA证书:
```powershell
New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName "LocalDevCA" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 4096 -HashAlgorithm SHA512 -KeyUsage CertSign, CRLSign -TextExtension @("2.5.29.19={critical}{text}CA=true")
```
该命令会在本地计算机个人证书存储中生成一个带私钥的根证书,【必须指定-CertStoreLocation cert:\LocalMachine\My】,否则后续无法导出私钥,也无法用它签发子证书。
执行后记下返回的Thumbprint值(一长串十六进制字符),然后运行:
```powershell
Get-ChildItem -Path cert:\LocalMachine\My | Where-Object {$_.Thumbprint -eq "你的Thumbprint"} | Export-Certificate -FilePath "$env:USERPROFILE\Desktop\LocalDevCA.cer"
```
这会把公钥部分导出为LocalDevCA.cer,放在桌面,供下一步安装到受信任根证书颁发机构。
将根证书安装到“受信任的根证书颁发机构”
按Win+R,输入certlm.msc,回车打开本地计算机证书管理器。
在左窗格依次展开:证书(本地计算机)→ 受信任的根证书颁发机构 → 证书。
右键“证书”文件夹 → 所有任务 → 导入 → 下一步 → 浏览找到桌面的LocalDevCA.cer → 下一步 → 选择“将所有的证书放入下列存储”,确认存储位置是“受信任的根证书颁发机构” → 完成。
这一步完成后,系统就正式信任你这个根CA签发的任何证书。如果跳过此步,或误导入到“个人”或“中间证书颁发机构”,浏览器仍会报错NET::ERR_CERT_AUTHORITY_INVALID。
用根CA签发localhost及局域网IP的SSL证书
方法一:使用PowerShell调用OpenSSL(需已安装OpenSSL)
准备一个SAN配置文件dev_san.cnf,内容如下:
```ini
[req]
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
req_extensions = v3_req
[req_distinguished_name]
CN = localhost
[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[v3_ca]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true
[alt_names]
DNS.1 = localhost
IP.1 = 127.0.0.1
IP.2 = ::1
```
保存后,在PowerShell中执行(替换路径):
```powershell
openssl req -x509 -newkey rsa:2048 -keyout dev.key -out dev.crt -days 3650 -nodes -config "C:\path\to\dev_san.cnf" -extensions v3_req -sha256
```
方法二:用Windows原生命令(无需OpenSSL)
直接运行(适用于仅需localhost场景):
```powershell
$cert = New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" -Signer (Get-ChildItem -Path "cert:\LocalMachine\My" | Where-Object {$_.Subject -eq "CN=LocalDevCA"}) -KeyExportPolicy Exportable -KeySpec KeyExchange -HashAlgorithm SHA512 -KeyLength 2048
Export-PfxCertificate -Cert $cert -FilePath "$env:USERPROFILE\Desktop\localhost.pfx" -Password (ConvertTo-SecureString -String "dev123" -Force -AsPlainText)
```
注意:此命令中的-Signer参数必须指向上一步生成的LocalDevCA证书,否则签发的证书不会被系统信任。
将签发的SSL证书绑定到IIS本地网站
第一步:打开IIS管理器 → 左侧连接栏点击服务器名称 → 双击“服务器证书”。
第二步:右侧操作栏点击“导入” → 浏览选择刚才生成的localhost.pfx → 输入密码dev123 → 确定。
第三步:在左侧网站列表中右键你的本地站点 → 编辑绑定 → 添加 → 类型选https → IP地址选“全部未分配”或指定本机IP → 端口443 → 主机名留空或填localhost → SSL证书下拉选择刚导入的证书 → 确定。
第四步:重启网站,用https://localhost访问,地址栏应显示绿色锁形图标,无任何安全警告。











