前文中我也说了,从苹果宣布所有iOS应用将强制采用ATS(App Transport Security)安全标准,也就是App的网络传输必须通过HTTPS协议传输而不是HTTP协议以后,现在大部分网站都开始动起来了,新浪也老早就给我发消息了。
在之前的文章中我也说了如何开启云存储的HTTPS功能,但是如果想整体网站全部HTTPS化,还是需要把服务器上的网页也全部HTTPS。所以就要我们申请一张SSL证书了。最早的时候我也介绍过StartSSL,可惜因为瞎搞被几个浏览器厂商联合封杀了。不过最近的Let's Encrypt 又出现了,而且出身清白,申请也方便。
Let's Encrypt是最近很火的一个免费SSL证书发行项目,Let's Encrypt是由ISRG提供的免费免费公益项目,自动化发行证书,但是证书只有90天的有效期。适合个人使用或者临时使用,不用再忍受自签发证书不受浏览器信赖的提示。(从军哥那直接抄来的)
军哥的LNMP 1.4自带了集成的Let's Encrypt申请,我就不班门弄斧讲如何用LNMP申请了,我要讲的是在Debian上自己自己用Let's Encrypt自带的工具申请和配置证书。工作环境是debian+apache。
SSL证书申请
本身Let's Encrypt自己也写了一套流程(https://certbot.eff.org/#debianwheezy-apache),大家可以一边参考一边看我的文章。
先下载certbot-auto工具,然后运行工具的安装依赖组件。
wget https://dl.eff.org/certbot-auto --no-check-certificate chmod +x ./certbot-auto ./certbot-auto -n
接下来运行:
./certbot-auto certonly --email admin@nicky1605.com --agree-tos --webroot -w /var/www/html -d www.nicky1605.com
如果想把根域跟www域名放在一起可以这样运行
./certbot-auto certonly --email admin@nicky1605.com --agree-tos --webroot -w /var/www/html ?-d www.nicky1605.com?-d nicky1605.com
生成的证书会存在:/etc/letsencrypt/live/www.nicky1605.com/ 目录下。
SSL证书续期
证书续期也非常方便,利用crontab进行自动续期。有些Debian没有安装crontab的可以先手动安装。
apt-get install cron
以下命令分别nginx跟apache是在crontab中输入的命令,意思是每10天续期一次,90天的有效期足够了。
0 3 */10 * * /root/certbot-auto renew --renew-hook "/etc/init.d/nginx reload" 0 3 */10 * * /root/certbot-auto renew --renew-hook "service apache2 restart"
SSL证书配置
LNMP或是Nginx的证书配置请参考军哥的教程(https://www.vpser.net/build/letsencrypt-certbot.html),我这里主要是说的Apache的教程,都是以我自己的网站域名为例。
首先到/etc/apache2/sites-available建立一个www.nicky1605.com.conf的配置文件,然后在配置文件中如此填写:
<VirtualHost *:80> ServerAdmin admin@nicky1605.com ServerName www.nicky1605.com #ServerAlias www.nicky1605.com DocumentRoot /var/www/html ErrorLog /var/log/apache2/www.error.log CustomLog /var/log/apache2/www.access.log combined </VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/html ServerName www.nicky1605.com:443 ServerAdmin admin@nicky1605.com ErrorLog "/var/log/apache2/www.error.log" CustomLog "/var/log/apache2/www.access.log" common SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.nicky1605.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.nicky1605.com/privkey.pem <Directory "/var/www/status"> SetOutputFilter DEFLATE Options FollowSymLinks AllowOverride All Order allow,deny Allow from all DirectoryIndex index.html index.php </Directory> </VirtualHost>
最后重启apache就可以了。
service apache2 restart
文章参考:
用 Let's Encrypt 给网站加 HTTPS 完全指南 :http://www.tuicool.com/articles/EF7NnaV
免费SSL安全证书Let's Encrypt安装使用教程(附Nginx/Apache配置):https://www.vpser.net/build/letsencrypt-free-ssl.html
免费SSL证书Let's Encrypt(certbot)安装使用教程:https://www.vpser.net/build/letsencrypt-certbot.html
记录基于Debian系统的Apache服务器多站点配置:http://blog.csdn.net/panzer9/article/details/51374128
linux学习之Crontab工具:http://www.imooc.com/article/7889
完整Debian7配置LAMP(Apache/MySQL/PHP)环境及搭建建站:http://www.laozuo.org/3423.html
本文作者为Nicky,转载请注明。
试试acme.sh?纯shell实现签发