let's encrypted证书申请教程

生活中我们会发现越来越多的网站开始使用了https,而现在网站转成https是大势所趋。但是在国内,推进的过程显然要比国外慢很多。现阶段如果将自己的网站改成https以后,会碰到这样的尴尬现象:如果在页面上引用了http://的链接或者图片,用户在浏览器上会看到类似该网站是非安全网站的警告,对于网站运营者来说可以说非常冤。由于很多链接是第三方的,没有办法去控制。对于api接口类的网站,就不存在混合的问题,所以首先应该从api后台接口部分开始用https。大牌提供商类似于阿里、腾讯的SSL证书可不便宜,对于大公司也许不算什么,但是对于小公司及个人来说贵了。现在国外出现的免费SSL服务商Let’s Encrypt,绝对是小公司或者开发者的福音。这里我整理了一下我在配置https的过程

首先,放出Let's Encrypt的官网地址:https://letsencrypt.org/
一般申请Let's Encrypt是通过certbot的脚本方式来实现,当然也可以通过在线申请,也可以通过支持Let's Encrypt的虚拟主机提供商来获取。这里我们通过certbot脚本的方式来申请

一、前提条件

拥有一个域名,例如aaa.com(在国内主机的用的话,还需要通过ICP备案)

在域名服务器创建一条A记录,指向云主机的公网IP地址。例如www.aaa.com指向xxx.xxx.xxx.xxx的IP地址

要等到新创建的域名解析能在公网上被解析到。

据说国内的域名提供商对let’s encrypt的支持非常差,但是经过试验,至少现阶段用dnspod解析的域名还没碰到问题。

如果您使用的是本地的虚拟机,那上面的都没关系,指定一条hosts就ok。

二、配置nginx站点。

① 安装 为使简洁,使用yum的方式进行安装nginx
yum install -y nginx

② 配置站点

vim /etc/nginx/nginx.conf

server {
listen 80;
server_name www.aaa.com;
charset utf-8;
root /var/www/aaa_com;
index index.html index.htm;
access_log /var/log/nginx/aaa.com_access.log;
error_log /var/log/nginx/aaa.com_error.log;
}

//通过修改nginx.conf文件中的上述部分字段来进行站点配置。
③ 启动(防火墙对80端口以及443端口进行开放,云主机需要设置安全组策略)

 

systemctl start nginx
使用浏览器进行访问:http://ip

三、生成证书(生成过程中需要先将nginx停止)

① 获取let’s encrypt

我们可以通过github,来直接获取到let’s encrypt项目

git clone https://github.com/letsencrypt/letsencrypt

② 配置证书
cd letsencrypt
./letsencrypt-auto certonly --standalone --email root@aaa.com -d aaa.com -d www.aaa.com

需要对协议进行同意

③ 配置https站点

证书生成后,会存放在

/etc/letsencrypt/live/aaa.com/

cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件

此时我们需要对nginx的配置进行修改
server {
listen 443 ssl;
server_name www.aaa.com;
root /var/www/aaa_com;
index index.html index.php;
ssl_certificate /etc/letsencrypt/live/aaa.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/aaa.com/privkey.pem;
}
//最新的nginx配置中,开启ssl不需要ssl on;,只需在端口后加ssl即可。
配置完成之后我们需要重新启动nginx
nginx -s reload

systemctl restart nginx
此时我们通过浏览器即可实现https的访问https://ip

 

四、http转https
对于http转换https,我们只需将原来80端口的请求全部转发至443端口即可。
修改配置文件中如下内容
server {
listen 80;
server_name www.aaa.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;

}

重载nginx
nginx -s reload

五、关于证书续期
我们从生成的文件中可以看到,Let's Encrypt证书是有效期90天的,需要我们自己手工更新续期才可以。
./letsencrypt-auto certonly --renew-by-default --email root@aaa.com -d aaa.com -d www.aaa.com
这样我们在90天内再去执行一次就可以解决续期问题,这样又可以继续使用90天。如果我们怕忘记的话也可以制作成定时执行任务,比如每个月执行一次。
上一篇:ftp服务器搭建教程 下一篇:没有了


腾讯云优惠活动博客,实时更新腾讯云最新优惠活动及提供腾讯云代金券的领取。