热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

在Nginx上使用Let'sEncrypt加密(HTTPS)你的网站

前几天有个消息,只在特定的圈子里传播了一下:ThePKIplatformofStartSSLisnowhostedbyQihoo360,大意是老牌的免费证书提供商StartSSL将服务器放到了Qihoo360的服务器上,于是担心证书已不再安全。从而转向免费证书新星Let'sEncryp

前几天有个消息,只在特定的圈子里传播了一下:The PKI platform of StartSSL is now hosted by Qihoo 360,大意是老牌的免费证书提供商 StartSSL 将服务器放到了 Qihoo 360 的服务器上,于是担心证书已不再安全。从而转向免费证书新星 Let’s Encrypt。

青小蛙曾经用过好几年的 StartSSL 服务,为此还付费使用过,一年 59.9 美金,你可以随意签发证书。不过近两年证书普遍降价,再加上免费的 Let’s Encrypt 和即将到来的 HTTP/2,互联网的全面 HTTPS 化将在不久的将来实现…届时不会再有劫持,不会再有干扰…总之看起来很美。

Let’s Encrypt 是一个将于2015年末推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过程的自动化流程,为安全网站提供免费的SSL/TLS证书。

Let’s Encrypt 是由互联网安全研究小组(ISRG,一个公益组织)提供的服务。主要赞助商包括电子前哨基金会,Mozilla基金会,Akamai以及思科。2015年4月9日,ISRG与Linux基金会宣布合作。

那么,现在使用 Let’s Encrypt 则是一个非常经济实惠又安全的选择,于是青小蛙参考 How To Secure Nginx with Let’s Encrypt on Ubuntu 14.04 这篇文章,有了这篇教程。

必备条件:

  1. 有一台 VPS,推荐 HHVPS 产品;
  2. 有一个域名(可以在 HH 注册);
  3. 想加密自己的网站

实现结果:

用户通过 TLS/SSL 加密访问你的网站,而后台实现自动续签 Let’s Encrypt 证书。

开始

教程基于 Ubuntu 14.04 系统,不够其他 Linux 版本都是类似的,用你熟悉的系统即可。

第 1 步:安装 Let’s Encrypt 客户端

装前准备,更新系统和安装 git & bc:

apt-get update
apt-get -y install git bc

克隆 Let’s Encrypt 到  /opt/letsencrypt:

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

第 2 步:获取证书

首先关闭 Nginx:

service nginx stop

并且检查一下 80 端口没有被占用:

netstat -na | grep ‘:80.*LISTEN’

运行 Let’s Encrypt:

cd /opt/letsencrypt
./letsencrypt-auto certonly –standalone

注意:Let’s Encrypt 需要超级用户权限,如果你没有使用 sudo 命令,可能会让你输入密码。

之后会出现图形界面输入邮箱、条款、域名等信息:

支持多域名,只需要在第三张截图里用空格或者英文逗号分隔就好了。

目前 Let’s Encrypt 没有 EV 证书与 泛域名证书的计划。

IMPORTANT NOTES:

  • If you lose your account credentials, you can recover through e-mails sent to domain@appinn.com
  • Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2016-05-15. To obtain a new version of the certificate in the future, simply run Let’s Encrypt again.
  • Your account credentials have been saved in your Let’s Encrypt configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Let’s Encrypt so making regular backups of this folder is ideal.
  • If like Let’s Encrypt, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

看到这一段,就正常证书已经签发成功,位于 /etc/letsencrypt,注意备份。

如果使用国内 VPS,此处可能会由于 DNS 问题出错,可以尝试更换 VPS 的 DNS 为第三方,比如 8.8.8.8。

每一个域名都会自动生成四个文件,位于 /etc/letsencrypt/archive/domain 目录下:

cert.pem: 域名证书
chain.pem: The Let’s Encrypt 证书
fullchain.pem: 上面两者合体
privkey.pem: 证书密钥

第 3 步:配置 Nginx

有了域名证书,就开始配置 Nginx 了,这部分比较略。

打开对应网站的配置文件,一般在 /etc/nginx/sites-available/default 或者 /usr/local/nginx/conf/ 中,试你自己的情况。

server {

listen 443 ssl;
server_name appinn.com;

ssl on;
ssl_certificate /etc/letsencrypt/live/appinn.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/appinn.com/privkey.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ‘EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH’;

}

注意修改红色的部分为你的域名

如果你想开启全站 https,需要将 http 转向到 https,再添加一个 server 就好了:

server {
listen 80;
server_name appinn.com;
return 301 https://$host$request_uri;
}

注意以上配置文件需要根据实际情况修改。

保存,重启 Nginx

service nginx restart

此时,打开你的域名比如 https:// 就能看到绿色的地址栏了。

第 4 步:自动续签证书

Let’s Encrypt 证书只有 90 天的有效期,这和之前按年使用的商业证书有些区别,所以我们还需要设置自动续签,好让证书一直有效。

安装 Webroot 插件

这是一个可以不用停止 Web 服务就能让 Let’s Encrypt 验证域名的插件,再次打开 Nginx 配置文件,在 ssl 下面添加:

location ~ /.well-known {
allow all;
}

保存。

使用命令行续签证书

cd /opt/letsencrypt
./letsencrypt-auto certonly -a webroot –agree-tos –renew-by-default –webroot-path=/usr/share/nginx/html -d example.com -dwww.example.com

注意修改 webroot-path 参数,这是你的网站路径。

service nginx reload

重新加载 Nginx 配置文件。

创建  Let’s Encrypt 续签配置文件

cp /opt/letsencrypt/examples/cli.ini /usr/local/etc/le-renew-webroot.ini

我们将直接编辑示例配置文件:

vi /usr/local/etc/le-renew-webroot.ini

修改以下几行:

rsa-key-size = 4096
email = you@example.com
domains = example.com, www.example.com
webroot-path = /usr/share/nginx/html

保存。

现在就可以使用配置文件来续签证书了:

cd /opt/letsencrypt
./letsencrypt-auto certonly -a webroot –renew-by-default –config /usr/local/etc/le-renew-webroot.ini

创建自动续签脚本

下载脚本并设置权限:

curl -L -o /usr/local/sbin/le-renew-webroot https://gist.githubusercontent.com/thisismitch/e1b603165523df66d5cc/raw/fbffbf358e96110d5566f13677d9bd5f4f65794c/le-renew-webroot
chmod +x /usr/local/sbin/le-renew-webroot

注意:确保上一步创建的 续签配置文件 /usr/local/etc/le-renew-webroot.ini 存在,否则脚本将无法运行。

运行脚本:

le-renew-webroot

正常情况下,你将得到当前证书的剩余时间:

Checking expiration date for example.com…
The certificate is up to date, no need for renewal (82 days left).

创建定时任务:

crontab -e

添加下面一行,让每周一早上 2 点 30 分运行一次,并记录到日志文件中。

30 2 * * 1 /usr/local/sbin/le-renew-webroot >> /var/log/le-renewal.log

结束

至此,在 Nginx 上使用 Let’s Encrypt 的配置与续签全部完成,今后就完全不需要打理这一部分了,HTTPS 将默默工作。目前善用佳软 已经在使用 Let’s Encrypt,可以围观一下:https://xbeta.info

小众软件还有一枚有效期内的泛域名证书,目前还没有使用 Let’s Encrypt,是的,你可以用 https://www.appinn.com 来访问小众软件,不过由于历史以及 CDN 遗留问题,还没有全站切换过去,等待 HTTP/2 吧。

不过发现频道(https://faxian.appinn.com)已经 HTTPS 了哦。有疑问欢迎留言反馈。


推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • GSIOpenSSH PAM_USER 安全绕过漏洞
    漏洞名称:GSI-OpenSSHPAM_USER安全绕过漏洞CNNVD编号:CNNVD-201304-097发布时间:2013-04-09 ... [详细]
author-avatar
kiki百乐门_867
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有