域名 HTTPS 证书绑定, 就是把那个已经签发好的 SSL/TLS 证书, 部署到你的服务器上头, 然后把这根线连到指定的那条域名上去, 这么干, 是为了让浏览器那边, 只要是走 HTTPS 协议过来的访问请求, 它都会自动地把加密传输出给打开, 这篇文章里, 会给你提供一个完整的绑定操作流程, 外加配置规范, 还有故障排查指引, 全都在这儿了。

一、绑定前置条件

1. 用户已经拥有了SSL证书, 并且该证书与目标域名完全匹配, 这个类型包括单域名、通配符或者多域名的选择。

2. 这个域名已经完成ICP备案这个手续了, 因为如果要是在中国大陆的服务器上部署的话, 这步操作是必须要做的。

3. 服务器的443端口是开放的, 这个状态大家都能看清楚, 它现在并没有被其他的服务程序或者应用所占用去使用。

4. 证书的格式需要与Web服务器的类型相匹配, 对于Nginx和Apache这两种服务器来说, 它们使用的是PEM格式, 具体表现为.crt文件和.key文件在一起, 而对于IIS这种服务器来说, 它使用的是PFX格式, 也就是常说的.pfx文件。

二、Nginx绑定操作(标准步骤)

第一步, 你要把那个证书文件上传到服务器那里去。

你需要把fullchain.pem这个文件, 它必须是包含了中间证书的, 还有privkey.pem这个文件, 一起上传到/etc/nginx/ssl/这个目录下。然后呢, 你还要设置一下权限, 具体的命令是chmod 600 /etc/nginx/ssl/privkey.pem。

就是执行到第二步这个操作的时候, 要把那个server代码块给配置好。

我们需要在由路径 /etc/nginx/conf.d/ 所指定的 Nginx 配置文件当中, 把以下内容添加进去。

server {

listen 443 ssl;

把server_name参数对应的值设置为example.com, 然后保存并关闭当前的配置文件。

ssl_certificate /etc/nginx/ssl/fullchain.pem;

ssl_certificate_key /etc/nginx/ssl/privkey.pem;

通过设置 ssl_protocols 这个参数, 然后分别指定使用 TLSv1.2 和 TLSv1.3 这些协议。

配置ssl_ciphers选项为字符串, 该字符串具体由ECDHE-RSA-AES256-GCM-SHA384、HIGH、!aNULL以及!MD5这几个部分通过分号进行连接。

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

}

步骤3, 对HTTP跳转到HTTPS进行强制性的配置安排。

保留或新增80端口server块:

server {

请去听取关于八百号数的信息。

HTTPS证书怎么绑定域名?服务器配置步骤与常见问题(图1)

把server_name参数对应的值设置为example.com, 然后保存并关闭当前的配置文件。

return 301 https://$host$request_uri;

}

第4步, 是对语法进行验证, 然后执行重新加载的操作。

先运行一下 nginx -t 这个命令, 来检查一下配置里面有没有出现啥错误, 确认没有什么问题之后, 再来跑一下 nginx -s reload 这个操作, 好让新改好的配置能够立刻得到生效。

三、关于Apache进行绑定这个操作, 这里做一个简单的叙述。

把相关的设置指令写进那个Apache虚拟主机的配置文件里去。

把那个SSL引擎的情况给弄成开启的状态。

SSLCertificateFile /etc/ssl/example.com.crt

SSLCertificateKeyFile /etc/ssl/example.com.key

SSLCertificateChainFile /etc/ssl/intermediate.crt

阜新市自然资源事务服务中心

在配置做完以后, 执行apachctl -t并且systemctl reload httpd。

四、把它进行绑定, 接着对情况进行验证。

1. 当你打开那个浏览器, 然后去访问https://yourdomain.com这个页面的时候, 你会看到在那个地址栏的边上, 出现了一个像锁形状的图标, 并且整个过程中没有弹出任何关于安全方面的警告信息。

2. 命令行执行:openssl s_client -connect yourdomain.com:443 -verify_return_error域名HTTPS证书绑定域名HTTPS证书绑定,确认验证结果无错误;

3. 你可以去使用SSL Labs这个网站, 也就是我们常说的那个地址为sslabs.com的地方来进行在线的检测工作, 然后在做完检测之后需要看清楚最后出来的安全评级是多少, 要确认这个安全评级是达到A级别或者是比A更高等级的才行。

4. 请去查看一下证书的详细页面, 对里面的颁发者链条进行完整的检查, 确保不存在中间证书环节缺失的情况。

问题一, 用户会遇到浏览器提示证书无效的现象, 这个时候要依次进行排查工作, 首先去检查该证书是不是已经过去了有效期限了, 然后去看一看证书的CN字段, 还有SAN字段里面的域名信息, 是否和当前的这个域名完全对得上号, 最后还要查一下在fullchain里面, 会不会缺少了那个必须的中间证书部分。

关于问题2, 也就是存在301重定向循环的情况, 需要确认在80端口的server块中, 没有误加ssl指令, 并且在HTTPS的server块中, 也没有包含指向其自身的http重定向。

问题三是这样的, 就是部分移动端浏览器在兼容方面出现了异常的情况, 因此需要去确认证书这个事项, 它使用的是fullchain这一种形式,所谓fullchain其实就是leaf加上intermediate的组合, 而不是仅仅只使用leaf cert。

六、运维管理建议

证书的有效期限往往是呈90天这种状态的, 这种情况出现在Let's Encrypt里面时就是这样, 而如果是商业CA颁发机构的话, 期限就变到了1至2年这个范围里了, 所以大家最好是可以在域名管理面板中去配置一个提醒机制的, 这个机制要分成三级去做的, 这三级分别就是在到期前60天的时候进行提醒, 在到期前30天的时候进行提示, 以及在到期前7天的时候去发送通知。

就拿gname.xin提供的域名, 还有证书监控服务这个例子来说, 我们可以把SSL证书即将到期的事件情况。以及DNS解析现在的状态怎么样这些事, 一起放到一个统一的告警面板里去看。

这样做的目的, 就是要确保那个搞运维的团队, 能在规定的响应时间范围内。去把证书续期这活儿给完成好。顺便也把相关的绑定工作重新弄一遍。最终的目的呢, 就是为了避免出现服务中断的这个麻烦事儿。