免费生成https证书以及配置

2019-09-27 17:45 来源:未知

工具获得

证书机构: Let's Encrypt - https://letsencrypt.org
配置工具: Certbot - https://certbot.eff.org/

事实上,你根本用不到上面两个链接,我把它们写在这只是为了方便了解其他细节,顺便表示尊重。

实际上我们可以直接通过包管理器获取 Certbot 工具。

首先需要安装 EPEL 源:

sudo yum install epel-release -y

然后安装 Certbot :

sudo yum install python2-certbot-nginx -y

工具安装完成。

http升级到https需要在nginx的配置中加入证书信息,查询资料后确定生成证书两种方案

二、 填写邮箱

在下述提示后,填写你的邮箱地址。

Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): xxxx@xxxx.com

输入你的邮箱地址,回车确定。

第一种:自签名证书,然后开启 CloudFlare 的 CDN 服务

 

//确定是否安装openssl

which openssl

//如果没有安装,通过apt-get或者yum等方式安装即可

sudo apt-get install openssl

//生成一个名为“ssl.key”的 RSA key文件:执行结果:生成ssl.pass.key 和 ssl.key

openssl genrsa -des3 -passout pass:x -out ssl.pass.key 2048

openssl rsa -passin pass:x -in ssl.pass.key -out ssl.key

//删除中间文件

rm ssl.pass.key

接着,利用已经生成的 ssl.key 文件,进一步生成 ssl.csr 文件:

openssl req -new -key ssl.key -out ssl.csr

执行此行命令会提示输入密码,按回车即可,因为前面我们在生成 ssl.key 时选择了密码留空。

最后我们利用前面生成的 ssl.key 和 ssl.csr 文件来生成 ssl.crt 文件,也就是自签名的 SSL 证书文件:

openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt

这一步之后,我们得到一个自签名的 SSL 证书文件 ssl.crt,有效期为 365 天。此时,ssl.csr 文件也已经不再被需要,可以删除掉了:

rm ssl.csr

 

参考地址:

https://hinine.com/create-and-deploy-a-self-signed-ssl-certificate-to-nginx/

 

八、 证书过期

由于 Let's Encrypt 的免费证书有效期是90天,所以你需要每80几天重新申请一次。

Certbot 可以通过简单的命令完成这个工作:

certbot renew

如果你还是觉得麻烦,可以把这个操作设为定时任务,每80几天运行一次,就可以高枕无忧了。

第二种:借助于Let's Encrypt

 

Let's Encrypt 简介

如果要启用HTTPS,我们就需要从证书授权机构(以下简称CA) 处获取一个证书,Let's Encrypt 就是一个 CA。我们可以从 Let's Encrypt 获得网站域名的免费的证书。

Certbot 简介

Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let's Encrypt 证书。

 

1. 下载 certbot

最好是根据官方网址来处理:

https://certbot.eff.org/

 

图片 1图片 2

2. 生成免费证书

官方文档有比较详细的说明,根据自己的情况来选择

https://certbot.eff.org/docs/using.html

 

注意:官方限制了每周的申请次数,如果你进行开发测试,生成证书的时候加上 --staging参数,这样就不必太担心数量的限制了

 

下面介绍几种方法

无论哪一种方法,实质都是验证你是不是拥有这个域名,只不过实现的途径不同

 

1>webroot方法,此方法会在你配置的服务器站点目录下创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 http://example.com/.well-known/acme-challenge 来验证你的域名是否绑定的这个服务器

 

如果你自己没有创建相应的站点也可以自己加入一个比较通用的配置

location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /usr/share/nginx/html; } location = /.well-known/acme-challenge/ { return 404; }

 

certbot certonly --webroot -w 网站根目录 -d example.com -w 网站根目录 -d www.example.com

 

2>standalone方法,如果你不想使用你自己的服务器,这个方法是个选择,但是需要注意要关闭相应的端口或者是80或者443(以你自己选择的方式决定)

使用80端口: certbot certonly --standalone --preferred-challenges http -d example.com

使用443端口: certbot certonly --standalone --preferred-challenges tls-sni -d example.com

 

3>manual方法,如果你想在任意的linux主机下生成证书,那么这种方法可能是一个选择,但是要注意的是验证过程中会生成一个字符串,需要你将这个随机的字符串添加到你dns服务器才可以完成验证操作.

certbot certonly --manual --preferred-challenges dns -d archerwong.cn

 

3.删除证书,如果你生成的时候添加了 --stagin参数,下面的命令也要添加

certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem

certbot delete --cert-name example.com

 

4.证书更新

sudo certbot renew --dry-run

 

5.丰富的参数选择

以上的各种命令其实都是可以加入很多参数,最好是查找下官方文档

https://certbot.eff.org/docs/using.html

 

当然官方提供了很多种生成证书的方法,你可以根据你自己的实际情况进行选择

 

证书生成完毕后,我们可以在 /etc/letsencrypt/live/ 目录下看到对应域名的文件夹,里面存放了指向证书的一些快捷方式。

 

生成证书后,配置 Nginx

 

打开 nginx server 配置文件加入如下设置:

server {

  listen 443 ssl on;

  ssl_certificate /etc/letsencrypt/live/网站域名/fullchain.pem;

  ssl_certificate_key /etc/letsencrypt/live/网站域名/privkey.pem;

  ## 其他配置

}

 

强制跳转 https

https 默认是监听 443 端口的,没开启 https 访问的话一般默认是 80 端口。如果你确定网站 80 端口上的站点都支持 https 的话加入下面的配件可以自动重定向到 https

server {

  listen 80;

  server_name your.domain.com;

  return 301 https://$server_name$request_uri;

}

 

参考地址:

https://zhuanlan.zhihu.com/p/21286171

https://zhuanlan.zhihu.com/p/24996258

 

 

 

 

 

 

 

 

 

一、 启动 Certbot

通过命令:

sudo certbot --nginx

 

环境

  • CentOS 7.1
  • python2.x(这玩意系统里本来就有)

三、 同意用户协议

下述提示提醒你阅读并同意用户协议之类的。

Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf.
You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

输入字母 A 回车确定。

五、 指定域名

由于我们在安装nginx后没有配置站点,所以此处要求我们提供域名,配置工具会帮我们填写nginx的配置文件。

No names were found in your configuration files. Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c' to cancel): www.xxxx.com xxx.xxxx.com

输入你自己的域名(多个域名中间用空格隔开)回车确定。

配置https

此处我们使用 Let's Encrypt 提供的证书。且为了方便设置,使用 Certbot 配置工具。

TAG标签:
版权声明:本文由澳门新浦金网站发布于操作系统,转载请注明出处:免费生成https证书以及配置