linxu服务器配置免费ssl证书

导语:之前买过一台阿里云服务器,现在想配置一个ssl证书,现在就收集到的资料进行整理归纳,说一下如何配置一个域名ssl证书。

# 配置环境准备

  • 一台Linux系统的在线服务器

  • 一个经过dns解析可以正常访问的http协议的网站

# 配置方法

这里主要介绍的是免费ssl证书配置,付费证书请访问以下网站购买。

以上两个比较权威。

下面介绍免费配置方法。

  • ssl免费证书网
  • cert包进行配置

# ssl证书

ssl证书是类似于驾驶证、护照的数字证书,遵守ssl协议,由信任的CA机构验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。很多网站都启用了ssl证书,来确保他们的网站避免信息被获取盗用。

一般来说,ssl证书分为以下三种:

  • 扩展验证型(EV)SSL证书,迄今为止审核最为严格的证书,不仅验证网站服务器身份,还会通过律师函第三方验证;
  • 组织验证型(OV)SSL证书,针对网站域名和所有权进行严格的审查,强化企业信任度;
  • 域名验证型(DV)SSL证书,只验证网站域名所有权的简易型证书,仅能起到网站信息加密的作用,无法验证网站的所有者真实身份。

# ssl免费证书网

这个网站主要目的还是宣传普及ssl证书,顺便向大众提供免费的基础的ssl申请使用服务。

申请步骤就是:

+进入首页选择证书,这里提供品牌证书和收费证书;

+填写你需要的域名,然后点击创建

这里是具体的申请方法,我就不详细说明了。

# 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
1
2
3
4
5
6

# 修改nginx配置文件

进入/etc/nginx/vhost/,然后打开配置文件,eg.conf,把80端口改成重写到https,增加443端口的配置。

cd /etc/nginx/vhost
vi eg.conf
1
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;
  }
}
1
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
1

这时候打开https://eg.com,你就可以看到小锁,说明配置成功!

# 证书的更新

这种证书一般有效期只有三个月,使用到期要续,到期后发邮件,renew即可。

/home/certbot-master/certbot-auto renew
1

# 傻瓜配置安装ssl证书

这种方法下载一个yum包,一键即可配置成功,不需要写配置文件,不需要敲命令和输入邮箱域名名称等信息。

  • 下载包
sudo yum install python2-certbot-nginx
1
  • 开始配置
sudo certbot --nginx
1

报错的话,安装pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3就可以了。

下面会出现几个选项,选择你要配置的域名序号,然后再输入是否自动配置,然后重启nginx就可以了。

sudo systemctl restart nginx
1
  • 续期

执行以下命令便可续期

sudo certbot renew --dry-run
1

# 补充

如果提示

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
1
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
1
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
1
2
3
4
5
6
7

查看这篇也可以certbot证书配置方法报错解决方法 (opens new window)

# 补充方法

使用certbot-auto脚本安装certbot生成https证书

  • 下载certbot脚本文件
wget https://dl.eff.org/certbot-auto
1
  • 赋予权限
chmod a+x certbot-auto
1
  • 申请证书
 ./certbot-auto certonly --standalone --email 'xxx@163.com' -d 'xxx.com'
1
  • 配置泛域名证书
certbot-auto certonly  -d "*.xxx.com" -d xxx.com --manual --preferred-challenges dns-01  --server https://acme-v02.api.letsencrypt.org/directory
1
  • 续期
# 续签
./certbot-auto renew

# 强制续签
./certbot-auto renew --force-renew
1
2
3
4
5
  • 吊销证书
# 查看当前机器证书
certbot-auto certificates
# 吊销证书
./certbot-auto revoke --cert-path /etc/letsencrypt/live/xxx.com/cert.pem --reason superseded
1
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
1
2
3
4
5
6
7
8
9
10
11
12
chmod a+x renew-certbot.sh
1

加定时任务

0 4 1 */2 * /root/renew-cert.sh >/root/crontab.log 2>&1
1

# 写在最后

本篇所讲ssl证书配置只是为了开发测试使用,如果是开展正常商务活动和电商交易以及其他企业贸易活动,请配置正规的付费的证书,会比较好。有什么不懂的可以留言。

分享至:

  • qq
  • qq空间
  • 微博
  • 豆瓣
  • 贴吧