启用 HTTPS
...大约 2 分钟
1. 获取证书
这里采用阿里云的免费证书。
1.1 申请
- 访问 https://www.aliyun.com/product/cas 选择免费 SSL 证书, 填写申请
- DNS 验证:由于域名不是阿里云的,所以来到 https://www.namesilo.com/ 的控制台
- 在个人页面选择
domain manager
- 在域名栏右侧点击蓝色小球 (Manage DNS for this domain)
- 选择
TXT/SPF
填入阿里云提供的信息
- 在个人页面选择
2. 安装证书
证书申请成功后,在下证书会有 xxx.pem
证书 和 xxx.key
证书私钥 两个文件。
这里服务器采用 Docker + Nginx 的形式部署,nginx 已有文件夹挂载到本地(其他方式详见 安装证书),故:
创建文件夹
cert
, 上传证书文件创建配置文件
conf.d/ssl.conf
:#以下属性中,以ssl开头的属性表示与证书配置有关。 server { #配置HTTPS的默认访问端口为443。 #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。 #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。 listen 443 ssl; #填写证书绑定的域名 server_name <yourdomain>; root html; index index.html index.htm; #填写证书文件名称 ssl_certificate cert/<cert-file-name>.pem; #填写证书私钥文件名称 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协议的类型,您需要自行评估是否配置TLSv1.1协议。 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; location / { #Web网站程序存放目录 root html; index index.html index.htm; } }
(可选) 配置 HTTP 自动跳转 HTTPS 修改
conf.d/localhost.conf
:server { # ... #将所有HTTP请求通过rewrite指令重定向到HTTPS。 rewrite ^(.*)$ https://$host$1; # ... }
重启容器:
$ docker restart xxxx
3. 容器关联 443 端口
之前启动容器时仅关联了80端口,故需要修改配置。有两种方式:
- 创建新镜像,重新启动
- 直接修改容器配置
3.1 创建新镜像
停止容器:
$ docker stop containter01
创建镜像
$ docker commit container01 image02
启动新镜像
$ docker run -p 80:80 -p 443:443 image02
3.2 直接修改容器配置
停止 docker 容器:
$ docker stop container
停止 docker 服务
$ systemctl stop docker
进入文件夹
/var/lib/docker/containers/[hash_of_the_container]/
, 修改文件hostconfig.json
和config.v2.json
启动 docker 服务
启动 docker 容器
Reference
- 如何安装SSL证书 阿里云
- How do I assign a port mapping to an existing Docker container? Stackoverflow
Powered by Waline v2.15.2