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 数字证书安装部署的主要内容,如果未能解决你的问题,请参考以下文章

https部署

tomcat安装SSL证书

phpStudy环境安装SSL证书教程(apache)

如何在linux下安装ssl证书?

nginx 80 映射web服务,并安装使用https ssl证书

知晓云助力小程序开发