启用 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
