Tencent SSL 数字证书安装部署
Posted 云计算-Security
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tencent SSL 数字证书安装部署相关的知识,希望对你有一定的参考价值。
前言
之前写了一篇关于 SSL 证书的文章《Nginx 自签证书实现80转443》,不过这是自签证书的形式进行部署的,尽管能正常访问,但依然显示是不安全的,因为自签证书是得不到认可的。因开发人员需要 https 方式请求(对接各种数据),我们公司使用的是腾讯云服务器,为满足开发需求,于是就在腾讯云上购买了一个免费的 SSL 证书,并进行相关的部署配置,接下来简单说一下部署配置过程和要注意的相关事项。
一、SSL 证书购买
1、域名解析
首先你得有域名和云服务器,并做了对应的域名解析(主域名和子域名),如果你有用到负载均衡器(CLB),该负载均衡会有对应的 vip,也是需要事先把你得主域名和子域名解析到负载均衡 vip,这里我以负载均衡的形式进行演示。
2、购买 SSL证书
购买方式请参考腾讯云文档《域名型(DV)免费 SSL 证书申请流程》,该文档记录得很详细,免费证书提供二级域名证书申请,而且只能申请单个域名证书,而不能申请泛域名证书(除非购买付费证书)。其主要步骤如下:
- 选择证书类型:TrustAsia TLS RSA CA;
- 填写证书内容
- 提交资料:选择加密算法、绑定的域名、申请邮箱、备注、私钥等。注意:如需部署腾讯云负载均衡、CDN 等云服务,请勿填写私钥密码。
- 选择验证方式:自动添加 DNS、DNS 验证、文件验证。注意:自2021年12月01日起,对于使用文件验证方式的域名,只能为当前被验证的域名签发证书,不支持签发通配符 SSL 证书和其下级子域名 SSL 证书。我这里使用的是【自动添加 DNS】,该方式的限制条件:须使用腾讯云 DNS 解析 DNSPod 的域名。
- 验证域名:如果选择了【自动添加 DNS】,它会自动完成域名所有权验证。
- 签发证书:验证通过后会签发对应的域名证书。
3、下载证书到本地并上传至服务器
二、配置监听器
登录腾讯云负载均衡控制台配置监听器,配置步骤参考腾讯云文档《配置 HTTPS 监听器》,CLB 与后端服务器的协议选用 HTTP/80。想要 http 和 https 都能访问,也需要同时配置这两个监听器。由于篇幅较长,不再做详细概述,如要了解均衡方式、会话保持、重定向等,可参考腾讯云文档《负载均衡》。
三、nginx SSL 配置
1、证书内容
各类服务器系统证书 SSL 安装部署,我使用的是 Linux 系统的 Nginx 方式进行安装部署,下图为证书所包含的内容,可以看到该证书可应用于 Apache、IIS、Nginx、Tomcat,根据实际情况选择对应的服务即可。
2、Nginx 配置
这里有几种方式可选择:
-
直接以 https 形式访问:以腾讯云为例子
server { # SSL 访问端口号为 443 listen 443 ssl; # 填写绑定证书的域名 server_name cloud.tencent.com; # 证书文件名称(若证书没和nginx配置文件在同级目录下,则须使用绝对路径) ssl_certificate 1_cloud.tencent.com_bundle.crt; # 私钥文件名称(若私钥没和nginx配置文件在同级目录下,则须使用绝对路径) ssl_certificate_key 2_cloud.tencent.com.key; ssl_session_timeout 5m; # 请按照以下协议配置 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { # 网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 root html; index index.html index.htm; } }
nginx -t # 看看语法是否有错(有错的话需要先解决错误,否则修改的配置不生效) nginx -s reload # 重载Nginx
-
http 转 https:以腾讯云为例子
server { listen 443 ssl; # 填写绑定证书的域名 server_name cloud.tencent.com; # 证书文件名称(若证书没和nginx配置文件在同级目录下,则须使用绝对路径) ssl_certificate 1_cloud.tencent.com_bundle.crt; # 私钥文件名称(若私钥没和nginx配置文件在同级目录下,则须使用绝对路径) ssl_certificate_key 2_cloud.tencent.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { # 网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 root html; index index.html index.htm; } } server { listen 80; # 填写绑定证书的域名 server_name cloud.tencent.com; # 把http的域名请求转成https(永久重定向) return 301 https://$host$request_uri; }
nginx -t # 看看语法是否有错(有错的话需要先解决错误,否则修改的配置不生效) nginx -s reload # 重载Nginx
-
http 和 https 均可访问:以腾讯云为例子,也可参考我前面的博文《Nginx 自签证书实现80转443》。
server { listen 80; listen 443 ssl; # 填写绑定证书的域名 server_name cloud.tencent.com; # 证书文件名称(若证书没和nginx配置文件在同级目录下,则须使用绝对路径) ssl_certificate 1_cloud.tencent.com_bundle.crt; # 私钥文件名称(若私钥没和nginx配置文件在同级目录下,则须使用绝对路径) ssl_certificate_key 2_cloud.tencent.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { # 网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 root html; index index.html index.htm; } }
nginx -t # 看看语法是否有错(有错的话需要先解决错误,否则修改的配置不生效) nginx -s reload # 重载Nginx
FAQ
-
域名解析问题
在申请 SSL 证书前,需对证书要绑定的域名进行域名解析,目的是为了域名验证时进行
自动添加 DNS
,否则可能会导致域名所有权验证失败,从而无法签发证书。 -
监听器配置问题
SSL 证书签发后,负载均衡器需配置 HTTPS 监听器,并绑定相应的后端服务器(看其健康状态),负载均衡器与后端服务器以 HTTP 形式通信即可。
-
端口过滤问题
Nginx 配置好后,还需注意端口是否开放问题,这个端口开放是负载均衡器的,编辑负载均衡器的安全组,放开 443 端口,这里也需要注意,有的公司内部是对端口做限制的,也需要公司内部进行放开,要不然你们公司内部是无法访问的,而公司外部的其他人员都是可以正常访问的。这里提供一个端口、解析检测的方法,大家可以参考:以
www.baidu.com
为例(1)如果你 SSL 证书绑定的域名无法访问页面时,可用 dig 命令看看解析是否正确。
(2)如果上述解析没问题,但依然不能访问,再使用 nmap 进行端口扫描,看看端口是否被过滤掉了。前提你的服务已监听了该端口(netstat -lntp 查看)
以上是关于Tencent SSL 数字证书安装部署的主要内容,如果未能解决你的问题,请参考以下文章