Docker中Nginx配置阿里云ssl证书全流程

Docker中Nginx配置阿里云ssl证书全流程

木子李 261 2021-11-16

友情提示:最好是阿里云服务器和备案域名,混搭暂时没试过
Docker 安装文档

1. 获取免费ssl证书

打开阿里云官方搜索:ssl证书

2. 创建免费ssl证书

填写对应域名的用户申请信息,然后提交申请,等待状态变更为已签发

3. 下载ssl证书

点击下载,选择Nginx类型下载

4. 将ssl证书上传到服务器中

如果还未在Docker中创建Nginx容器,请参考Docker 安装Nginx并挂载目录

在Nginx容器的挂载配置文件夹中创建一个证书文件夹:cert

将下载证书压缩包解压得到 .key 和 .pem 后缀的文件

将这两个文件上传到创建的证书文件夹中

5. 修改配置文件

server {
    #配置HTTPS的默认访问端口为443。
    listen 443 ssl;
    #需要将yourdomain.com替换成证书绑定的域名。
    server_name yourdomain.com; 

    root html;
    index index.html index.htm;

    #需要将cert-file-name.pem替换成已上传的证书文件的名称。
    ssl_certificate cert/cert-file-name.pem;
    #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
    ssl_certificate_key cert/cert-file-name.key; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

    #表示使用的TLS协议的类型
    ssl_protocols TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        root html;  #站点目录。
        index index.html index.htm;
    }
}

按ESC键,输入:wq保存退出

6. 检查配置文件是否正确

docker exec -it Nginx容器ID ./usr/sbin/nginx -t

如果提示Error,检查秘钥配置路径

这里配置秘钥路径为容器内的路径指向

7. 检查443端口是否开启

查看防火墙状态
systemctl status firewalld

如果防火墙开启状态,可以选择关闭或者添加端口

关闭防火墙
systemctl stop firewalld

查看防火墙已开放的端口
firewall-cmd --zone=public --list-ports

防火墙开放指定端口443(添加后刷新防火墙,执行指令)
firewall-cmd --zone=public --add-port=443/tcp --permanent

刷新防火墙
firewall-cmd --reload

在阿里云实例安全组中开放443端口