如何为网站配置(Let’s Encrypt)HTTPS协议

来源:互联网 发布:张伯礼 知乎 编辑:程序博客网 时间:2024/05/24 06:52

如何为网站配置(Let’s Encrypt)HTTPS协议

之前写过另外一篇文章《Windows下安装Xampp并配置SSL》,有兴趣可以看下。一直纠结我这个博客要不要上HTTPS协议,发现好多站都是用的Let’s Encrypt SSL证书,我也好奇,今天手贱配置了SSL。这个证书有效期90天,不过可以用脚本自动续期。

 Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS,目前Facebook等大公司开始加入赞助行列。Let's Encrypt已经得了 IdenTrust 的交叉签名,这意味着其证书现在已经可以被Mozilla、Google、Microsoft和Apple等主流的浏览器所信任,你只需要在Web 服务器证书链中配置交叉签名,浏览器客户端会自动处理好其它的一切,Let's Encrypt安装简单,未来大规模采用可能性非常大。

下面给大家说说怎么配置:
先说下网站环境
System environment: Centos 7
Nginx version: nginx/1.4.7
本人懒省事,用的阿里云一键安装包sh-1.5.5

下面进入正题
1、配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块–with-http_ssl_module–with-http_gzip_static_module,命令查看是否有相应模块,没有需要重新编译,默认一键安装包都带了。

nginx -V

2、防火墙开启https协议默认端口443

# vi /etc/sysconfig/iptables #编辑防火墙配置文件,添加以下代码-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT:wq! #保存退出service iptables restart(/bin/systemctl restart  iptables.service)  #重启防火墙

3、利用脚本快速获取Let’s Encrypt SSL证书

# mkdir /alidata/server/nginx/certs/  //创建certs目录# cd /alidata/server/nginx/certs/     //进入certs目录下载脚本文件wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.confwget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh给予脚本755权限chmod +x letsencrypt.sh

4、配置letsencrypt.conf文件

vi letsencrypt.conf# only modify the values, key files will be generated automaticly.ACCOUNT_KEY="letsencrypt-account.key"DOMAIN_KEY="lirongyao.com.key"DOMAIN_DIR="/alidata/www/site"DOMAINS="DNS:lirongyao.com"#ECC=TRUE#LIGHTTPD=TRUE:wq!   保存

5、执行脚本生成需要的key文件

# ./letsencrypt.sh letsencrypt.confGenerate account key...Generating RSA private key, 4096 bit long modulus................++.......................................................................................................................................................................................................................................................................................................++e is 65537 (0x10001)Generate domain key...Generating RSA private key, 2048 bit long modulus................................................................+++.......................+++e is 65537 (0x10001)Generate CSR...lirongyao.csrParsing account key...Parsing CSR...Registering account...Registered!Verifying lirongyao.com...lirongyao.com verified!Signing certificate...Certificate signed!New cert: lirongyao.chained.crt has been generated  //看到这个说明获取证书成功

如果出现如下错误信息:

错误1

Traceback (most recent call last):
File “/tmp/acme_tiny.py“, line 2, in <module>
import argparse, subprocess, json, os, sys, base64, binascii, time, hashlib, re, copy, textwrap, logging ImportError: No module named argparse

执行以下命令:

yum install python-argparse

错误2

Traceback (most recent call last):
File “setup.py“, line 3, in <module>
from setuptools import setup, find_packages ImportError: No module named setuptools

安装setuptools

wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz tar zxvf setuptools-0.6c11.tar.gz cd setuptools-0.6c11 python setup.py build python setup.py install

错误3

ValueError: Wrote file to /alidata/www/boke/.well-known/acme-challenge/23YlOKT25QPM0NtJL-tHkWOxEXja_aVUTAqKXwlp66g, but couldn’t download http://lirongyao.com/.well-known/acme-challenge/23YlOKT25QPM0NtJL-tHkWOxEXja_aVUTAqKXwlp66g

原因是国内DNS解析问题,还有没有目录没有权限写入等提示

完成后会生成以下几个文件

lets-encrypt-x3-cross-signed.pemletsencrypt-account.keylirongyao.chained.crtlirongyao.com.keylirongyao.crtlirongyao.csr

6、打开网站配置文件,修改和添加红色部分

# vi /alidata/server/nginx/conf/vhosts/rongyao.confserver {        listen  443;ssl on;ssl_certificate /alidata/server/nginx/certs/lirongyao.chained.crt;ssl_certificate_key /alidata/server/nginx/certs/lirongyao.com.key;server_name lirongyao.com;        index index.html index.htm index.php;       root /alidata/www/site;       ...省略部分...}server {listen 80;rewrite ^(.*) https://lirongyao.com$1 permanent;  //强制80转向443}:wq!   保存#service nginx restart   重启NGINX服务

至此HTTPS协议配置完成。

7、每月1号定时自动续期,因为这个证书只有90天有效期。

0 0 1 * * /alidata/server/nginx/certs/letsencrypt.sh /alidata/server/nginx/certs/letsencrypt.conf >> /alidata/log/lets-encrypt.log 2>&1

如何配置定时任务参考这篇文章《Linux定时重启系统或服务》

原创文章,转载请注明: 转载自荣耀博客
本文链接地址: 如何为网站配置(Let’s Encrypt)HTTPS协议
阅读全文
0 0