导语:之前买过一台阿里云服务器,现在想配置一个ssl证书,现在就收集到的资料进行整理归纳,说一下如何配置一个域名ssl证书。
# 配置环境准备
一台Linux系统的在线服务器
一个经过dns解析可以正常访问的http协议的网站
# 配置方法
这里主要介绍的是免费ssl证书配置,付费证书请访问以下网站购买。
以上两个比较权威。
下面介绍免费配置方法。
- ssl免费证书网
- cert包进行配置
# ssl证书
ssl证书是类似于驾驶证、护照的数字证书,遵守ssl协议,由信任的CA机构验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。很多网站都启用了ssl证书,来确保他们的网站避免信息被获取盗用。
一般来说,ssl证书分为以下三种:
- 扩展验证型(EV)SSL证书,迄今为止审核最为严格的证书,不仅验证网站服务器身份,还会通过律师函第三方验证;
- 组织验证型(OV)SSL证书,针对网站域名和所有权进行严格的审查,强化企业信任度;
- 域名验证型(DV)SSL证书,只验证网站域名所有权的简易型证书,仅能起到网站信息加密的作用,无法验证网站的所有者真实身份。
# ssl免费证书网
这个网站主要目的还是宣传普及ssl证书,顺便向大众提供免费的基础的ssl申请使用服务。
申请步骤就是:
- 点击进入【官网】 (opens new window),注册账号;
+进入首页选择证书,这里提供品牌证书和收费证书;
+填写你需要的域名,然后点击创建
这里是具体的申请方法,我就不详细说明了。
# linux安装ssl证书
这个才是本文重点,主要介绍如何在linux系统的服务器上面免费申请ssl证书,并使用nginx进行配置。
证书官网资源:
# 下载安装certbot
- 使用ssh工具登录服务器,然后把安装包下载下来,安装。
cd /home
wget https://github.com/certbot/certbot/archive/master.zip
unzip master.zip
cd master
./certbot-auto --help
./certbot-auto certonly --webroot --agree-tos -v -t --email eg@126.com -w /var/www/eg.com/web -d eg.com
2
3
4
5
6
# 修改nginx配置文件
进入/etc/nginx/vhost/
,然后打开配置文件,eg.conf
,把80端口改成重写到https,增加443端口的配置。
cd /etc/nginx/vhost
vi eg.conf
2
下面是简单的配置内容:
server {
listen 80;
server_name eg.com;
location / {
rewrite (.*) https://eg.com$1 permanent;
}
}
server {
listen 443;
server_name eg.com;
ssl on;
root /var/www/eg.com/web;
index index.html index.php;
ssl_certificate "/etc/letsencrypt/live/eg.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/eg.com/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 重启nginx即可
sudo systemctl restart nginx
这时候打开https://eg.com
,你就可以看到小锁,说明配置成功!
# 证书的更新
这种证书一般有效期只有三个月,使用到期要续,到期后发邮件,renew
即可。
/home/certbot-master/certbot-auto renew
# 傻瓜配置安装ssl证书
这种方法下载一个yum包,一键即可配置成功,不需要写配置文件,不需要敲命令和输入邮箱域名名称等信息。
- 下载包
sudo yum install python2-certbot-nginx
- 开始配置
sudo certbot --nginx
报错的话,安装pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3
就可以了。
下面会出现几个选项,选择你要配置的域名序号,然后再输入是否自动配置,然后重启nginx就可以了。
sudo systemctl restart nginx
- 续期
执行以下命令便可续期
sudo certbot renew --dry-run
# 补充
如果提示
Traceback (most recent call last):
File "/usr/bin/certbot", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3112, in <module>
@_call_aside
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3096, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3125, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 580, in _build_master
return cls._build_from_requirements(__requires__)
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 593, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 781, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'urllib3<1.24,>=1.21.1' distribution was not found and is required by requests
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
请运行以下方法:
pip uninstall urllib3
pip uninstall requests
pip uninstall chardet
pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3
2
3
4
或者
pip uninstall urllib3
pip uninstall requests
pip uninstall chardet
yum remove python-requests
yum remove python-urllib3
pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3
yum install certbot
2
3
4
5
6
7
查看这篇也可以certbot证书配置方法报错解决方法 (opens new window)
# 补充方法
使用certbot-auto
脚本安装certbot生成https证书
- 下载certbot脚本文件
wget https://dl.eff.org/certbot-auto
- 赋予权限
chmod a+x certbot-auto
- 申请证书
./certbot-auto certonly --standalone --email 'xxx@163.com' -d 'xxx.com'
- 配置泛域名证书
certbot-auto certonly -d "*.xxx.com" -d xxx.com --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
- 续期
# 续签
./certbot-auto renew
# 强制续签
./certbot-auto renew --force-renew
2
3
4
5
- 吊销证书
# 查看当前机器证书
certbot-auto certificates
# 吊销证书
./certbot-auto revoke --cert-path /etc/letsencrypt/live/xxx.com/cert.pem --reason superseded
2
3
4
reason有这5种:unspecified
, keycompromise
, affiliationchanged
, superseded
, cessationofoperation
-- reason
表示吊销证书的原因,命令运行成功后,/etc/letsencrypt/renewal
、/etc/letsencrypt/archive
、/etc/letsencrypt/live
下对应的文件都会被删除。
小技巧:
编写续签脚本。
#!/bin/bash
#program: this is a auto-renew ssl scripts.
#author: Mr.Mark
#date: 2020-02-19
#version: v0.0.1
# renew script
systemctl stop nginx
./certbot-auto renew --force-renew
systemctl start nginx
exit 0
2
3
4
5
6
7
8
9
10
11
12
chmod a+x renew-certbot.sh
加定时任务
0 4 1 */2 * /root/renew-cert.sh >/root/crontab.log 2>&1
# 写在最后
本篇所讲ssl证书配置只是为了开发测试使用,如果是开展正常商务活动和电商交易以及其他企业贸易活动,请配置正规的付费的证书,会比较好。有什么不懂的可以留言。