【网络】给你的网站加个密吧(HTTPS 配置)

前言

SSL 证书是数字证书的一种,遵照 SSL 协议,具备服务器身份验证和数据传输加密的功能。这里主要采用了免费的 let's enscript 来在服务器上进行配置。nginx

1. 使用 acme.sh 来安装并生成证书

1.1 安装 acme.sh

acme.sh 会安装到 ~/.acme.sh 目录下git

curl https://get.acme.sh | sh
复制代码

1.2 生成证书

注意此处会占用 80 端口(有时候自动失败,手动更新的时候尤为注意 nginx 占用 80),若是有其余进程占用了 80 端口要关闭,例如 nginx。 这里使用了 standalone 模式,此外还有 nginx apache 模式等,详情请看 github.com/Neilpang/ac…github

~/.acme.sh/acme.sh --issue --standalone -d example.com -d www.example.com -d test.example.com (-k ec-256 能够选,-k 表示密钥长度)
复制代码

1.3 更新证书

let's enscript 的有效期只有 90 天,到期须要更新证书。acme.sh 脚本 60 天会自动更新一次,固然也能够手动更新 手动更新shell

~/.acme.sh/acme.sh --renew -d example.com -d www.example.com -d test.example.com --force --ecc
复制代码

1.4 安装证书和秘钥

多个域名只须要配置第一个就能够了,此处安装到 /etc/nginx/ssl/ 路径下(最好很差修改,手动更新的时候比较麻烦)apache

~/.acme.sh/acme.sh --install-cert --ecc -d example.com \
--key-file      /etc/nginx/ssl/example.com.key  \
--fullchain-file /etc/nginx/ssl/example.com.crt
复制代码

2. nginx 配置

server {
  listen  443 ssl;
  ssl on;
  ssl_certificate      /etc/nginx/ssl/wangshukeji.crt;
  ssl_certificate_key  /etc/nginx/ssl/wangshukeji.key;
  ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers          HIGH:!aNULL:!MD5;
  server_name          example.com;
}
# 配置 302 转发
server {
  listen  80;
  server_name  example.com;
  return 302 https://example.com$request_uri;
}
复制代码

3. 通配符域名

// 阿里云控制台 accsess key 打开获得下面的值
export Ali_Key="key"
export Ali_Secret="secret"
acme.sh --issue --dns dns_ali -d example.com -d '*.example.com'

// Namesilo
export Namesilo_Key="xxxxxxxxxxxxxxxxxxxxxxxx"
acme.sh --issue --dns dns_namesilo --dnssleep 900 -d example.com -d '*.example.com'

acme.sh --renew -d example.com -d '*.example.com'
复制代码

中间会等待120s,生成的证书在 /root/.acme.sh/example.com/ 目录下,而后配置 fullchain.cer 和 example.com.key 便可。json

效果图
相关文章
相关标签/搜索