给中文域名申请SSL证书,先确认后台接受哪种名称。有的后台能自动转换,有的只接受转换后的ASCII名称。两种写法看起来差别很大,但只要转换正确,它们可以表示同一个域名。真正需要确认的是:订单、域名验证和最终证书,认的是不是你准备让用户访问的那个名字。
比如,你把中文网址交给负责安装的人,对方回了一串字母和连字符,先别急着让他改回去。如果对方正在配置Nginx,回给你的可能就是该填进server_name的名称。不过,中文名称对应的编码、另外注册的拼音域名、加了www的地址,这三种情况不能混在一起处理。先认清它们,后面填写SSL证书申请表和排查名称错误才有依据。

那串xn--没有把中文域名变成另一个网站
中文域名属于国际化域名,常见缩写是IDN。为了让相关系统处理这些名称,域名中的中文部分会按规则转换为只含ASCII字符的表示形式。符合IDNA规则的中文标签叫U-label,对应的ASCII标签叫A-label;Punycode是这个转换过程中使用的编码算法。
拿“例子.example”演示,它对应“xn--fsqu00a.example”。这里的.example是保留的示例后缀,只用来说明格式,不能拿这个地址实际申请公网证书。你会发现,转换的是“例子”这一段,后面的点和example没有被一起改写。域名有几段,就分别处理需要转换的部分,不是把整条网址塞进一个编码框里。
这也解释了一个容易多花钱的误会:同一个中文域名及其正确的A-label形式,不需要仅因显示不同就各买一张证书。反过来,“例子”与自己另行注册的拼音名称,即使读音一样、网站内容一样,也不能算作同一域名。
不要自己在拼音前面补xn--,也不要靠眼睛猜哪串字母对应哪个汉字。随手拼出来的名称不一定是有效A-label。实际操作时,优先核对域名注册后台提供的对应形式,再确认申请系统识别到的域名。
申请表只收域名,就别把整条链接粘进去
先看清输入框要的是“域名”还是“网址”。SSL证书订单里的域名字段,通常填写主机名,不带https://,也不带端口、网页路径和问号后的参数。比如地址里有“/产品介绍”,这几个中文字属于路径,不能因为看见中文,就跟域名一起做Punycode转换。
还有一种常见误填:浏览器复制出来的链接带着一长串百分号,便把那段内容放进证书申请表。路径中的百分号编码和国际化域名编码是两回事。先从完整链接中找出主机名,再处理主机名里的中文部分;不要把路径编码当成证书要保护的域名。
后台允许输入中文时,提交前看一眼确认页:它最终识别出的ASCII名称,能否对应回自己的中文域名。后台要求ASCII时,就填完整的对应名称。不要为了让输入框通过,擅自删掉某个汉字、替换后缀,或者改填另一个英文域名。表单接受了内容,只能说明格式检查过关。
如果域名后缀本身也是中文,后缀也需要处理,不能只转换最前面的一段。复制名称时保留完整的点号和连字符,不要为了排版把连续两个短横线换成中文破折号。
准备多个访问入口时,最好先把名称列出来:不带www的中文域名、带www的中文域名、独立注册的英文域名。www虽然挂在同一域名下面,访问时仍会检查这个完整名称;独立注册的英文入口也要在证书里有相应覆盖。是否合并进多域名SSL证书,要看实际产品支持的名称范围,而不是看这些网址是否属于同一家公司。
DNS验证失败,先看看记录被加到哪里了
中文域名申请HTTPS证书,一样需要通过CA要求的域名控制权验证。容易出问题的地方,是证书平台展示完整记录名,DNS后台却让你只填前面的主机记录。两个页面的输入习惯不同,原样复制也可能复制错位置。
以ACME的DNS-01验证为例,系统会在待验证域名前加上_acme-challenge,并要求发布TXT记录。若验证对象是示例中的根名称,完整记录名可以写成“_acme-challenge.xn--fsqu00a.example”。这是格式演示,记录值必须使用当前申请任务给出的内容,不能照抄别人的教程。
如果DNS控制台已经选中了这个域名的解析区域,而且会自动补齐域名后缀,主机记录可能只需要填_acme-challenge。遇到需要填写完整记录名的控制台,则保留后面的域名部分。保存后应核对最终生成的记录名,尤其留意有没有把域名后缀接了两遍。不要只凭“保存成功”就认定CA一定能查到。
验证对象带www时,完整记录名还会包含www这一段。不能因为根名称已经验证过,就把当前任务要求的记录直接省掉。先对照本次授权任务,再判断后台已有的记录是否满足要求;换一个订单,也不要想当然地沿用上次的验证值。
也别把所有CA的DNS验证都套成上面的写法。有的订单要求CNAME,有的验证名称带着特定标识,应按当前任务分别核对记录类型、记录名和记录值。中文域名转换解决的是名称表示问题,不会替你补齐缺失的DNS记录,也不会替代域名控制权验证。
证书里出现字母,重点看能不能对应上
证书签发后,打开详情,找到“主题备用名称”,也就是SAN。对于用域名访问的网站,要核对其中DNS名称是否覆盖访问主机;国际化域名在这里使用A-label表示。有些查看工具会再转成方便阅读的中文,所以两个界面显示不一样,并不必然说明签错。
核对时可以把访问主机转换成ASCII形式,再与SAN中的DNS名称比较。从最左侧的标签到最后的后缀,都要纳入比较。若SAN里只有拼音域名,而浏览器访问的是另一个中文域名,证书尚在有效期内也不能弥补名称不匹配。证书中列出了正确的公司名,也不表示公司的所有网址都已包括在内。
如果SAN中列的是“*.xn--fsqu00a.example”,这个通配符可以匹配该域名下一层的主机名,包括www;对于根名称“xn--fsqu00a.example”或再往下多出一层的主机名,这个星号条目都不适用。产品如果另外包含根名称,应在实际签发的SAN中确认,别把套餐介绍当成核对结果。
Nginx绑定域名时,填的是ASCII写法
手工编辑Nginx配置时,server_name应使用ASCII形式。沿用前面的示例,若站点需要处理根名称和www入口,可以写成:
server_name xn--fsqu00a.example www.xn--fsqu00a.example;
这一行只演示名称填写,不是一份可直接上线的HTTPS配置。证书文件、私钥和TLS监听还要正确配置,而且证书必须覆盖需要访问的名称。把域名加进server_name,不会自动把它加进已经签发的SSL证书。
如果用的是服务器面板,就先看面板的域名绑定说明:有的允许中文输入并自动生成配置,有的要求填写ASCII。不要看到底层使用A-label,就去把面板里所有中文字段统一替换。真正要核对的是面板生成的站点配置,以及用户连接这个域名时服务器实际返回的证书。
也没有必要只为中文域名去改证书文件名。文件叫site.pem还是其他名字,并不决定证书保护哪个网站,内容里的名称才有这个作用。若线上返回了另一个站点的证书,应检查TLS入口的证书绑定和站点选择,不能靠重命名文件修好。
地址栏变成xn--,不等于SSL证书失效
Chrome会根据自己的国际化域名显示策略,决定某段名称显示为Unicode字符还是ASCII形式。对可能造成视觉混淆的字符组合,它可能保留xn--写法。地址栏怎么展示,与证书里的名称能否匹配,需要分开判断。
所以,用户反馈“网址突然变成一串字母”时,先确认那串名称是否仍对应自己的域名,再看浏览器有没有具体证书错误。若只是Chrome换了展示方式,名称对应关系没变,TLS验证也正常,就继续使用原证书。
如果真的提示名称错误,就记录发生提示时的完整地址和返回证书中的SAN。特别是中文域名跳转到英文域名的站点,HTTPS入口先要完成TLS验证,之后才有机会发送网页跳转。不能只给跳转后的目标域名装证书,就期待前面的中文HTTPS入口自动通过验证。
中文域名SSL证书常见问题
1、中文域名一定要申请企业型SSL证书吗?
不一定。域名包含中文,并不直接决定选DV还是OV。申请主体、验证需求,以及CA对该域名和证书产品的支持情况,才是需要确认的条件;升级验证类型也不会修正填错的域名。
2、中文域名转换以后太长,能手动缩短吗?
不能。删减编码后的字符会改变名称或使它无效。域名标签有长度限制,遇到申请系统报长度或格式错误,应核对完整转换结果及域名本身是否符合规则,不能截断后继续提交。
3、中文域名改了一个字,原证书还能用吗?
先拿改字后的完整名称查SAN。改字后的域名通常对应另一个A-label,不能因为只差一个字就沿用。若新名称不在原证书覆盖范围内,应通过支持的重签、增补名称或新申请流程处理。
4、访问地址只有路径里带中文,也算中文域名吗?
不算。英文主机名后面跟着中文栏目名,证书仍按访问的主机名核对。新增中文文章或栏目,一般不需要为每个路径重新申请SSL证书;如果同时更换了访问主机名,则另行检查。
5、可以把中文名称和ASCII名称一起发给安装人员吗?
可以,交接时放在同一行更容易核对。同时标明是否包含www、哪些独立域名需要跳转,以及证书SAN已覆盖哪些名称。两种写法用于认清同一个域名,不要把它们误列成两个独立采购项。
相关阅读:中文域名申请SSL证书



