# Https 升级


<!--more-->


## 1.Let's Encrypt

Let's Encrypt  ——  是一个由非营利性组织互联网安全研究小组（ISRG）提供的免费、自动化和开放的证书颁发机构（CA），简单的说，就是为网站提供免费的 SSL/TLS 证书。互联网安全研究小组（ISRG）：ISRG是美国加利福尼亚州的一家公益公司，成立于2013年5月，第一个项目是Let's Encrypt证书颁发机构。

Let’s Encrypt 使用 ACME 协议来验证您对给定域名的控制权并向您颁发证书。要获得 Let’s Encrypt 证书，您需要选择一个要使用的 ACME 客户端软件

Let’s Encrypt 不控制或审查第三方客户端，也不能保证其安全性或可靠性。官方推荐使用 Certbot 客户端来签发证书，官网：https://certbot.eff.org/

ACME协议：

- Automatic Certificate Management Environment=ACME，自动认证管理环境协议
- ACME协议的基本思路是：
  - 在你服务器上生成一次性的随机特征数据(nonce)
  - 然后通过Let’s Encrypt的服务器核对这个数据
  - 核对成功发放证书

使用前提:

- 域名，它会生成指定域名的证书
- 在域名指向的服务器上能访问https
- Linux环境



### 1.1 环境准备

Certbot的两种工作方式：

- Standalone 方式

   certbot 会自己运行一个 web server 来进行验证。如果我们自己的服务器上已经有 web server 正在运行 （比如 Nginx 或 Apache ），用 standalone 方式的话需要先关掉它，以免冲突。

- Web root 方式

  certbot 会利用既有的 web server，在其 web root目录下创建隐藏文件， Let’s Encrypt 服务端会通过域名来访问这些隐藏文件，以确认你的确拥有对应域名的控制权。

配置示例：

- 安装nginx（不做示例，看nginx分类相关文章）

- 安装wget `yum -y install wget`

- 下载certbot客户端

  ```shell
  #下载
  wget https://dl.eff.org/certbot-auto 
  #添加执行权限
  chmod a+x ./certbot-auto
  ```

- nginx配置域名等

### 1.2 生成并配置证书

- 使用certbot-auto命令，生成证书

  ```shell
  #域名必须真实有效
  certbot-auto certonly --webroot --email aaa@163.com -w /usr/share/nginx/html/ -d  [填写合法域名的地址]
  ```

- 生成的证书放在/etc/letsencrypt/live/[网站域名]下

  例如：/etc/letsencrypt/live/baidu.com

  | 文件名        | 内容                                                         |
  | ------------- | ------------------------------------------------------------ |
  | Cert.pem      | 服务端证书                                                   |
  | Chain.pem     | 浏览器需要的所有证书但不包括服务端证书，比如根证书和中间证书 |
  | Fullchain.pem | 包括了cert.pem和chain.pem的内容                              |
  | Privkey.pem   | 证书的私钥                                                   |

  一般情况下fullchain.pem和privkey.pem就够用了

- 配置nginx支持https访问

  ```nginx
  ssl_certificate  "/etc/letsencrypt/live/***.com/fullchain.pem";
  ssl_certificate_key "/etc/letsencrypt/live/***.com/privkey.pem
  ```



### 1.3 更新证书

默认证书有效期是3个月，所以需要续期。
设置每月1日的凌晨3点就会执行一次所有域名的续期操作

创建linux 定时任务即可



## 2.阿里云ssl证书

阿里云有个人DV、企业OV、大型EV等证书类型

可以申请使用免费证书

证书下载包支持以下服务器等：tomcat, apache, nginx, iis, classFish, jboss, jetty等

有相关详细配置说明，可参考配置，这里不再演示
















