zhaowei/技术支持/证书获取方法.md
2024-12-30 17:46:00 +08:00

223 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 在 Ubuntu系统上
## 1.安装 Certbot
```shell
bash
sudo apt update
sudo apt install certbot #安装certbot
sudo apt install python3-certbot-nginx # 安装certbot-Nginx插件
```
## 2. 生成 SSL 证书
#### 2.1使用 Nginx 进行自动配置
```shell
bash
复制代码
sudo certbot --nginx -d example.com
```
- `-d example.com 是你要为其申请证书的域名。
- Certbot 会自动配置 Nginx使得你的站点使用 HTTPS 协议。
#### 2.2使用 Nginx 仅获取证书(手动配置)
如果您只想获取证书而不让 Certbot 自动配置 Nginx可以使用以下命令
```shell
bash
复制代码
sudo certbot certonly --nginx
```
证书文件生成后,默认保存路径为:
- **证书文件**`/etc/letsencrypt/live/example.com/fullchain.pem`
- **私钥文件**`/etc/letsencrypt/live/example.com/privkey.pem`
#### 2.3手动获取证书
如果你没有使用自动配置工具,或者使用其他类型的 Web 服务器,你可以手动获取证书。
```shell
bash
复制代码
sudo certbot certonly --manual -d example.com
```
Certbot 会引导你通过 DNS 或 HTTP 验证来证明你拥有域名的所有权。
#### 2.4使用 Standalone 模式获取证书
如果您的服务器没有运行 Nginx或您暂时关闭了 Nginx 服务,可以使用 Standalone 模式获取证书:
##### 停止 Nginx 服务:
```shell
bash
复制代码
sudo systemctl stop nginx
```
##### 获取证书:
```shell
bash
复制代码
sudo certbot certonly --standalone -d example.com
```
- `-d` 参数指定域名。
- Certbot 会启动一个临时的 HTTP 服务器,监听 80 端口,用于域名验证。
##### 启动 Nginx 服务:
完成证书生成后,重新启动 Nginx
```shell
bash
复制代码
sudo systemctl start nginx
```
### 3. 验证证书获取成功
证书获取成功后,证书文件通常存储在 `/etc/letsencrypt/live/` 目录下。
```shell
bash
ls /etc/letsencrypt/live/example.com/
```
你应该能看到 `fullchain.pem``privkey.pem` 文件:
- `fullchain.pem` 是完整的证书链文件(包括根证书和中间证书)。
- `privkey.pem` 是私钥文件。
### 4. 配置 Web 服务器使用证书
#### Nginx 配置示例:
编辑你的 Nginx 配置文件:
```shell
bash
复制代码
sudo vi /etc/nginx/sites-available/default #具体看你nginx的配置文件路径
```
修改或添加以下配置来启用 HTTPS
```shell
server {
listen 80;
server_name example.com;
# HTTP 到 HTTPS 的重定向
return 301 https://$host:服务端口$request_uri; #如果要重定向注意是https
}
server {
listen 80;
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; #获取到证书的位置
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;#获取到私钥的位置
# SSL 配置(根据需要调整)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384';
# 网站的其他配置...
}
```
### 5.配置自动续期
Let's Encrypt 证书有效期为 90 天。要避免证书过期,可以设置自动续期任务。
运行以下命令测试续期是否正常:
```shell
bash
复制代码
sudo certbot renew --dry-run
```
添加一个 cron 任务定期检查续期:
```shell
bash
复制代码
sudo crontab -e
```
添加以下内容:
```shell
bash
复制代码
0 0 * * * certbot renew --quiet && systemctl reload nginx
```
# 在windows系统下
### 使用 win-acme 获取证书
#### 1: 下载 win-acme
1. 访问 win-acme 的 [GitHub 页面](https://github.com/win-acme/win-acme)。
2. 下载最新版本的 ZIP 文件(通常是 `wacs-x.x.x.xxx.zip`)。
3. 解压到一个文件夹,例如 `C:\win-acme\`
#### 2: 运行 win-acme
1. 打开命令提示符(以管理员身份运行)。
2. 导航到 win-acme 文件夹:
```cmd
cmd
复制代码
cd C:\win-acme
```
3. 运行主程序:
```cmd
cmd
复制代码
wacs.exe
```
#### 3: 配置证书
运行 `wacs.exe` 后,您会看到一个交互式菜单,按照提示操作:
1. **选择选项**:选择 `N` 以创建新的 HTTPS 绑定。
2. **输入域名**:输入要申请证书的域名(如 `example.com`)。
3. **验证域名**
**选择验证方式**
- **HTTP-01 验证**:确保域名指向服务器的公网 IP并且可以通过 80 端口访问。
- **DNS-01 验证**:需要配置 DNS TXT 记录(适合无 80 端口访问的情况)。
4. **证书生成**成功验证后win-acme 会自动生成证书。
#### 4: 配置证书路径
win-acme 生成的证书路径通常位于:
```cmd
复制代码
C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates
```
证书文件包括:
- `.pfx` 文件:包含证书和私钥,适合导入到 IIS 等 Windows 服务。
- `.pem` 文件:可用于 Nginx 等服务器。