无论是企业网站还是个人博客,我们都不想在用户浏览是出现莫名其妙的广告,这时候HTTPS/SSL的作用就体现出来了。
本文主要介绍免费的Let's encrypt签发HTTPS/SSL证书的使用,也就是免费免费的Let's Encrypt SSL证书的使用教程。
Let's encrypt简介
Let’s Encrypt是由ISRG(Internet Security Research Group)提供的免费SSL项目。Let’s Encrypt现由Linux基金会托管,他的来头很大,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,现在已经得到Google、Facebook等大公司的支持和赞助,目的就是向网站免费签发和管理证书,让自己的http站点华丽转变成Https站点。
获得Let's encrypt证书
用户可自行到Let's encrypt注册、认证、配置、下载、安装,需要有一定的经验和英文阅读能力,同时需要做大量的配置工作。
也可以通过小软件来快速申请Let's encrypt证书。
Easy HTTPs软件,是上海哲涛科技研发的快速申请Let's encrypt安全证书的软件。通过Easy HTTPs软件管理Let's Encrypt证书,完全可视化引导式操作、所有操作步骤全中文提示和指引。同时完全基于B/S架构,开发人员仅需要输入域名和验证域名即可完成SSL安全证书签发、更新和下载,所签证书为受信任的证书,为用户网站数据提供安全保护。
https://easy.zhetao.com/ztcam.oms?omsv=wiki
接下来介绍申请Let's encrypt证书的过程:
yum install certbot
$ certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com
这个命令会为 http://example.com 和 http://www.example.com 这两个域名生成一个证书,使用 --webroot 模式会在 /var/www/example 中创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 http://example.com/.well-known/acme-challenge 来验证你的域名是否绑定的这个服务器。这个命令在大多数情况下都可以满足需求,
但是有些时候我们的一些服务并没有根目录,例如一些微服务,这时候使用 --webroot 就走不通了。certbot 还有另外一种模式 --standalone , 这种模式不需要指定网站根目录,他会自动启用服务器的443端口,来验证域名的归属。我们有其他服务(例如nginx)占用了443端口,就必须先停止这些服务,在证书生成完毕后,再启用。
certbot certonly --standalone -d example.com -d www.example.com
证书生成完毕后,我们可以在 /etc/letsencrypt/live/ 目录下看到对应域名的文件夹,里面存放了指向证书的一些快捷方式。
这时候我们的第一生成证书已经完成了,接下来就是配置我们的web服务器,启用HTTPS。
博客系统使用的是Nginx 服务器来转发请求,这里贴一下我的Nginx配置。
server {
server_name diamondfsd.com www.diamondfsd.com;
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/diamondfsd.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/diamondfsd.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3999;
proxy_http_version 1.1;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
server {
server_name api.diamondfsd.com;
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/api.diamondfsd.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.diamondfsd.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:4999;
proxy_http_version 1.1;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
主要是监听 443 端口,启用 SSL,并配置 SSL 的证书路径(公钥,私钥的路径)。
通过这些配置 我们就已经成功的完成了 Https 的启用。