当前位置:首页 > 前端开发 > 正文

IIS上如何设置Web服务器配置并安装私有证书,怎么做?

在IIS上安装私有证书,核心流程就三步:生成证书请求、导入证书文件、绑定HTTPS站点。 无论你用的是Windows Server 2016还是2022,操作路径基本一致,下面我按实际动手的顺序,把每一步拆开讲清楚。

在IIS服务器上安装私有证书前,先分清你拿到的是哪种证书

很多人一上来就卡在“证书格式不对”上,IIS服务器只认PFX格式的证书文件,也就是包含私钥的那种,如果你从证书颁发机构拿到的是.crt、.cer或.pem文件,需要先转换成PFX格式才能导入。

私有证书通常有两种来源:要么是企业自己搭的AD CS(Active Directory证书服务)签发的内部证书,要么是向第三方CA购买的付费证书,两者在IIS上的安装步骤完全一样,区别只在于客户端是否信任。

自签名证书和私有CA签发的证书不是一回事。 自签名证书的颁发者和使用者是同一个,浏览器会直接报“不安全”;私有CA签发的证书虽然也不被公网信任,但你可以通过组策略把CA根证书推送到域内所有电脑,实现内部系统零报错,如果你是给内网系统用的,建议走AD CS这条路,别图省事用自签名。

IIS服务器SSL证书安装具体怎么操作

下面以Windows Server 2019 + IIS 10为例,完整走一遍流程。

第一步:生成证书请求文件(CSR)

打开IIS管理器,选中服务器节点,在中间区域双击“服务器证书”

  • 点击右侧操作栏的“创建证书申请”
  • 在“可分辨名称”里填写公司信息,常见名称(CN)必须填你要保护的域名,比如erp.company.com,如果填了IP或者填错域名,证书装上去也匹配不上
  • 加密服务提供商选默认的“Microsoft RSA SChannel Cryptographic Provider”,位长选2048位
  • 把生成的.txt文件保存好,这就是CSR

然后把CSR内容提交给你的CA,如果你的环境里有AD CS,打开浏览器访问http://CA服务器IP/certsrv,选择“申请证书” -> “高级证书申请” -> 粘贴CSR,证书模板选“Web服务器”,提交后下载颁发的证书。

第二步:转换证书格式为PFX

拿到CA颁发的证书后,如果它和私钥是分开的,需要合并成PFX,用certreq命令就可以完成:

IIS上如何设置Web服务器配置并安装私有证书,怎么做? 第1张

  • 把CA颁发的.cer文件和当初生成CSR时保存的私钥文件放在同一个目录
  • 打开命令提示符,执行: certreq -accept 证书文件名.cer

    这条命令会把证书和私钥关联起来,装进当前用户的证书存储区

  • 然后打开mmc,添加“证书”管理单元,选择“计算机账户” -> “本地计算机”
  • 在“个人” -> “证书”里找到刚导入的证书,右键 -> “所有任务” -> “导出”,导出时勾选“是,导出私钥”,格式选PFX,设置导出密码

如果你是从第三方CA买的证书,通常下载包里有.pfx文件(比如IIS格式的压缩包),那就跳过这步,直接用。

第三步:在IIS中导入证书并绑定HTTPS

回到IIS管理器:

  • 打开“服务器证书”,点击右侧“导入”
  • 选择PFX文件,输入导出时设置的密码
  • 导入成功后,展开左侧的“网站”,选中你的目标站点,点击右侧的“绑定”
  • 点“添加”,类型选https,端口填443,主机名填你的域名,SSL证书下拉框里选刚导入的那个
  • 确定后,用https://你的域名访问测试

这里有个坑:如果绑定后访问提示“此网站无法提供安全连接”,多半是证书链不完整。 解决方法是在IIS的“服务器证书”里,右键证书 -> “查看” -> “详细信息”,确认“证书路径”里是否能显示完整的根证书和中间证书,缺了中间证书的话,需要把CA签发的中间证书也导入到“中间证书颁发机构”存储区。

IIS配置HTTPS证书后常见的几个问题排查

站点绑定了证书但浏览器还是报错

先检查三件事:

  • 域名和证书CN是否匹配,IIS不校验这个,但浏览器校验,你填的是oa.company.com,证书里写的是company.com,那肯定报错
  • 443端口是否被占用,命令行执行netstat -ano | findstr :443,看是哪个进程占用的,最常见的是其他站点或VMware等软件抢了端口
  • 防火墙是否放行443,Windows防火墙和云安全组都要检查,缺一不可

证书导入后“服务器证书”列表里看不到

这种情况通常是因为MMC里导入时选错了存储区,IIS读取的是“本地计算机”->“个人”存储区,如果你导入到了“当前用户”下,IIS就看不到,重新按上面第二步操作,选择“计算机账户”导入。

IIS上如何设置Web服务器配置并安装私有证书,怎么做? 第2张

HTTP自动跳转HTTPS怎么配置

IIS本身没有一键开启强制HTTPS的功能,需要装URL Rewrite模块,安装后,在站点根目录的web.config里加一条重写规则:

<rule name="HTTPS强制跳转" stopProcessing="true"> <match url="(.)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule>

加完保存,访问http://开头的地址会自动跳到https://。

IIS服务器SSL证书安装哪里下载和获取,怎么选

这个问题得分场景说,如果是公网业务,比如官网、商城,必须买第三方CA的证书,因为浏览器内置信任它们的根证书,目前主流的选择有DigiCert、GlobalSign、Sectigo等,价格从每年几百到几千不等,便宜的一般是单域名DV证书,贵的则是OV或EV证书,后者地址栏会显示公司名。

如果是内网系统,比如OA、ERP、财务系统,用AD CS签发的私有证书就够了,成本为零,行业共识认为,内网环境用私有CA证书在安全性上并不比付费证书差,关键是做好根证书的分发和管理。

还有一类情况是开发测试环境,用New-SelfSignedCertificate PowerShell命令生成自签名证书临时用一下就行,没必要花钱:

New-SelfSignedCertificate -DnsName "test.local" -CertStoreLocation cert:LocalMachineMy

生成后导出PFX,再按上面的步骤导入IIS。

私有证书和付费证书在日常使用中的区别

对比项 私有CA证书(AD CS) 第三方付费证书
客户端信任 需手动下发根证书 浏览器默认信任
有效期 通常1-5年,可灵活设置 通常1年,需要续费
成本 免费(需Windows Server许可) 按年收费
适合场景 内网系统、测试环境 公网站点、对外业务
吊销管理 通过AD CS统一管理 由CA管理

多数情况下,内网系统用私有证书,公网业务用付费证书,混合部署也很常见,如果公司有多个内部系统,花一天时间搭好AD CS根证书下发机制,后面所有系统都能复用,比每台服务器单独配自签名证书省心得多。

IIS上如何设置Web服务器配置并安装私有证书,怎么做? 第3张

IIS上配置好HTTPS之后还需要做什么

装完证书、配好绑定,工作还没结束,SSL证书有有效期,私有CA证书最长一般不超过5年,第三方证书通常1年,建议在证书到期前一个月设置提醒,IIS的证书没有自动续期功能,到期后要重新申请、导入、绑定,流程和首次安装一样。

定期检查证书的吊销状态,CA吊销证书后,IIS默认每24小时检查一次CRL,如果内网没有CRL分发点,客户端验证会变慢,可以在IIS的“服务器证书”里调整“证书吊销检查”的缓存设置,或者用AD CS的FTP方式分发CRL。

常见问题解答

IIS安装私有证书后,为什么手机访问提示不可信?

手机的信任库和Windows不一样,私有CA的根证书不会自动装进手机,如果你是内网私有证书,需要把CA根证书通过邮件或MDM推送到手机并安装信任,如果觉得麻烦,可以直接用第三方免费证书,比如Let’s Encrypt,但IIS上自动续期配置略复杂,需要借助Win-ACME这类工具。

IIS上可以同时绑定多个HTTPS证书吗?

可以,IIS支持SNI(服务器名称指示),在站点绑定时勾选“需要服务器名称指示”,然后为不同的域名分别添加绑定,每个绑定选不同的证书,Windows Server 2012 R2及以上版本都支持SNI,老版本只能一个IP对应一个证书。

私有证书过期了,内网系统会突然瘫痪吗?

浏览器不会因为证书过期就彻底拒绝访问,但会显示红色警告页,用户需要手动点击“继续前往”才能访问,对于自动化程序或API调用,证书过期会导致连接直接失败,因为客户端库通常不会跳过证书验证,内网私有证书过期前,务必提前准备新证书,替换流程和首次安装一致。

0